Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Lesterfbt en 22 Marzo 2019, 04:01 am



Título: Evitar duplicados en Jtable
Publicado por: Lesterfbt en 22 Marzo 2019, 04:01 am
Buenas noches,

Necesito ayuda con mi proyecto en Java lo tengo prácticamente finalizado pero esto es lo único que me tiene estancado,

Quiero evitar duplicados de la columna código de cliente de un Jtable, al darle clic al botón "Guardar", evalué si no hay código con ese valor lo guarde en la tabla si ya existe este código muestre la excepción que "Código del cliente ya existe" y no guarde.

Les agradecería su ayuda,

Saludos.


Título: Re: Evitar duplicados en Jtable
Publicado por: rub'n en 25 Marzo 2019, 00:16 am
Buenas noches,

Necesito ayuda con mi proyecto en Java lo tengo prácticamente finalizado pero esto es lo único que me tiene estancado,

Quiero evitar duplicados de la columna código de cliente de un Jtable, al darle clic al botón "Guardar", evalué si no hay código con ese valor lo guarde en la tabla si ya existe este código muestre la excepción que "Código del cliente ya existe" y no guarde.

Les agradecería su ayuda,

Saludos.

Si se puede pero muestra algo de código a ver como la tienes?...

 >:D

Código
  1. package foro;
  2.  
  3. import javax.swing.*;
  4. import javax.swing.border.TitledBorder;
  5. import javax.swing.table.DefaultTableModel;
  6. import java.awt.*;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. /**
  11.  * @Autor rub´n y google
  12.  */
  13. public class JTableAvoidDuplicados extends JFrame {
  14.  
  15.    private final DefaultTableModel defaultTableModel = new DefaultTableModel();
  16.    private final JTable table = new JTable(defaultTableModel);
  17.    private final JScrollPane jScrollPane = new JScrollPane(table);
  18.    private final JButton button = new JButton("Aceptar");
  19.    private final JTextField textField = new JTextField();
  20.  
  21.    public JTableAvoidDuplicados() {
  22.        init();
  23.  
  24.        setSize(500, 100);
  25.        pack();
  26.        setLocationRelativeTo(null);
  27.        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28.        setVisible(true);
  29.    }
  30.  
  31.    private void init() {
  32.        final JComponent panelNorte = getPanelNorte();
  33.        final JComponent panelSur = getPanelSur();
  34.        panelNorte.add(panelSur, BorderLayout.SOUTH);
  35.        add(panelNorte);
  36.    }
  37.  
  38.    private JComponent getPanelNorte() {
  39.        final JPanel panel = new JPanel();
  40.        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
  41.        final TitledBorder titledBorder = new TitledBorder("PoC duplicados en JTable");
  42.        titledBorder.setTitleFont(new Font(Font.SANS_SERIF,Font.BOLD,16));
  43.        panel.setBorder(titledBorder);
  44.        panel.add(jScrollPane, BorderLayout.NORTH);
  45.        /**
  46.          * Filas de la table
  47.          */
  48.        defaultTableModel.addColumn("Codigo");
  49.        defaultTableModel.addRow(new Object[]{"codigo-0000"});
  50.        defaultTableModel.addRow(new Object[]{"codigo-0001"});
  51.        defaultTableModel.addRow(new Object[]{"codigo-0002"});
  52.        defaultTableModel.addRow(new Object[]{"codigo-0003"});
  53.  
  54.        return panel;
  55.    }
  56.  
  57.    private JComponent getPanelSur() {
  58.        final JPanel panelSur = new JPanel();
  59.        panelSur.setLayout(new BoxLayout(panelSur,BoxLayout.X_AXIS));
  60.        panelSur.setBorder(BorderFactory.createEmptyBorder(10, 0, 5, 0));
  61.        panelSur.add(new JLabel("Introduce codigo: "));
  62.        panelSur.add(Box.createHorizontalStrut(10));
  63.        panelSur.add(textField);
  64.        panelSur.add(Box.createHorizontalStrut(10));
  65.        panelSur.add(button);
  66.        initBehaviour();
  67.        return panelSur;
  68.    }
  69.  
  70.    private void initBehaviour() {
  71.        button.addActionListener(e -> tabla(table, textField));
  72.    }
  73.  
  74.    private void tabla(JTable tabla, JTextField jTextField) {
  75.        String s = "";
  76.        boolean exists = false;
  77.        for (int i = 0; i < tabla.getRowCount(); i++) {
  78.            s = tabla.getValueAt(i, 0).toString().trim();
  79.  
  80.            if (jTextField.getText().equals("")) {
  81.                JOptionPane.showMessageDialog(null, "Introduce un valor");
  82.                break;
  83.            } else if (jTextField.getText().equals(s)) {
  84.                exists = true;
  85.                break;
  86.  
  87.            }
  88.        }
  89.        if (!exists) {
  90.            final DefaultTableModel dd = (DefaultTableModel) tabla.getModel();
  91.            final List<String> lista = new ArrayList<>();
  92.            final String codigo = jTextField.getText();
  93.            if (!codigo.equals("")) {
  94.                lista.add(jTextField.getText());
  95.                dd.addRow(lista.toArray());
  96.            }
  97.        } else {
  98.            JOptionPane.showMessageDialog(null, "Codigo existente.");
  99.        }
  100.    }
  101.  
  102.    public static void main(String... gaga) {
  103.        try {
  104.            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  105.        } catch (Exception ex) {
  106.            ex.printStackTrace();
  107.        }
  108.        new Thread(JTableAvoidDuplicados::new).start();
  109.    }
  110.  
  111. }
  112.  

(http://3.bp.blogspot.com/-OV3TiUg3Ug4/XKZxITIxCnI/AAAAAAAADpQ/Y3tNunDw9hMfY-Zk024_i21BgKDkw30EQCK4BGAYYCw/s1600/duplicadosEnJTable.gif)