Evitar duplicados en Jtable

Iniciado por Lesterfbt, 22 Marzo 2019, 04:01 AM

0 Miembros y 1 Visitante están viendo este tema.

Lesterfbt

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.

rub'n

#1
Cita de: 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.

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

>:D

Código (java) [Seleccionar]
package foro;

import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;

/**
* @Autor rub´n y google
*/
public class JTableAvoidDuplicados extends JFrame {

    private final DefaultTableModel defaultTableModel = new DefaultTableModel();
    private final JTable table = new JTable(defaultTableModel);
    private final JScrollPane jScrollPane = new JScrollPane(table);
    private final JButton button = new JButton("Aceptar");
    private final JTextField textField = new JTextField();

    public JTableAvoidDuplicados() {
        init();

        setSize(500, 100);
        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    private void init() {
        final JComponent panelNorte = getPanelNorte();
        final JComponent panelSur = getPanelSur();
        panelNorte.add(panelSur, BorderLayout.SOUTH);
        add(panelNorte);
    }

    private JComponent getPanelNorte() {
        final JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        final TitledBorder titledBorder = new TitledBorder("PoC duplicados en JTable");
        titledBorder.setTitleFont(new Font(Font.SANS_SERIF,Font.BOLD,16));
        panel.setBorder(titledBorder);
        panel.add(jScrollPane, BorderLayout.NORTH);
        /**
         * Filas de la table
         */
        defaultTableModel.addColumn("Codigo");
        defaultTableModel.addRow(new Object[]{"codigo-0000"});
        defaultTableModel.addRow(new Object[]{"codigo-0001"});
        defaultTableModel.addRow(new Object[]{"codigo-0002"});
        defaultTableModel.addRow(new Object[]{"codigo-0003"});

        return panel;
    }

    private JComponent getPanelSur() {
        final JPanel panelSur = new JPanel();
        panelSur.setLayout(new BoxLayout(panelSur,BoxLayout.X_AXIS));
        panelSur.setBorder(BorderFactory.createEmptyBorder(10, 0, 5, 0));
        panelSur.add(new JLabel("Introduce codigo: "));
        panelSur.add(Box.createHorizontalStrut(10));
        panelSur.add(textField);
        panelSur.add(Box.createHorizontalStrut(10));
        panelSur.add(button);
        initBehaviour();
        return panelSur;
    }

    private void initBehaviour() {
        button.addActionListener(e -> tabla(table, textField));
    }

    private void tabla(JTable tabla, JTextField jTextField) {
        String s = "";
        boolean exists = false;
        for (int i = 0; i < tabla.getRowCount(); i++) {
            s = tabla.getValueAt(i, 0).toString().trim();

            if (jTextField.getText().equals("")) {
                JOptionPane.showMessageDialog(null, "Introduce un valor");
                break;
            } else if (jTextField.getText().equals(s)) {
                exists = true;
                break;

            }
        }
        if (!exists) {
            final DefaultTableModel dd = (DefaultTableModel) tabla.getModel();
            final List<String> lista = new ArrayList<>();
            final String codigo = jTextField.getText();
            if (!codigo.equals("")) {
                lista.add(jTextField.getText());
                dd.addRow(lista.toArray());
            }
        } else {
            JOptionPane.showMessageDialog(null, "Codigo existente.");
        }
    }

    public static void main(String... gaga) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        new Thread(JTableAvoidDuplicados::new).start();
    }

}




rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen