Как связать данные ArrayList из базы данных в JComboBox в JTable? - PullRequest
0 голосов
/ 11 ноября 2018

Я успешно извлек данные из базы данных в JTable. Но у меня есть небольшая проблема, чтобы заполнить в JComboBox и затем добавить его в JTable. Как я сохранил ArrayList в формате String в столбце документов. Теперь я хочу, чтобы JComboBox в каждой строке столбца документов использовал этот ArrayList в JTable.

По сути, замена ArrayList String на JComboBox на элементы Array.

В столбце документов данные представлены в виде строки массива:

https://i.stack.imgur.com/GsyNN.png

Код Jtable:

private static final DatabaseConnections databaseConnections = new DatabaseConnections();
private Thread thread; 

Vector<Object> columnNames = new Vector<Object>();
Vector<Object> data = new Vector<Object>();

public ConnectionRecordsPanel() {
    initComponents();
    SetData();
}

private void SetData(){
    columnNames.addElement("Customer Id");
    columnNames.addElement("Name");
    columnNames.addElement("DOB");
    columnNames.addElement("Gender");
    columnNames.addElement("Current Address");
    columnNames.addElement("Permanent Address");
    columnNames.addElement("Mobile Number");
    columnNames.addElement("Email Id");
    columnNames.addElement("Documents");
    columnNames.addElement("Gas Type");
    columnNames.addElement("Status");


    thread = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                System.out.println("Inside run");
                data = databaseConnections.getData(data);
                System.out.println("Inside run");
                DefaultTableModel model = new DefaultTableModel(data, columnNames)
                {
                    @Override
                    public Class getColumnClass(int column)
                    {
                        for (int row = 0; row < getRowCount(); row++)
                        {
                            Object o = getValueAt(row, column);

                            if (o != null)
                            {
                                return o.getClass();
                            }
                        }
                        return Object.class;
                    }
                };
                jTable1.setModel(model);

                JComboBox jcb = new JComboBox();
                jTable1.getColumnModel().getColumn(9).setCellEditor(new DefaultCellEditor(jcb));
            } catch (ParseException ex) {
                Logger.getLogger(ConnectionRecordsPanel.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    });
    thread.start();
}

Чтение из базы данных

public Vector getData(Vector data) throws ParseException{
    try {
        resultSet = statement.executeQuery("select * from connection_records");
        while (resultSet.next()){
            Vector<Object> row = new Vector<Object>();

            for (int i = 1; i <= 11 ; i++)
            {
                row.addElement(resultSet.getString(i));
            }
            data.addElement( row );
        }
    } catch (SQLException ex) {
        Logger.getLogger(DatabaseConnections.class.getName()).log(Level.SEVERE, null, ex);
    }
    return data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...