Я успешно извлек данные из базы данных в JTable. Но у меня есть небольшая проблема, чтобы заполнить в JComboBox и затем добавить его в JTable. Как я сохранил ArrayList в формате String в столбце документов. Теперь я хочу, чтобы JComboBox в каждой строке столбца документов использовал этот ArrayList в JTable.
По сути, замена ArrayList String на JComboBox на элементы Array.
В столбце документов данные представлены в виде строки массива:
Код 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;
}