How to implement JComboBox in JTable?
JTable and ComboBox |
- Implement JComboBox in JTable.
- JComboBox value from Database.
- Database index of the selected JComboBox.
So lets not waste time and take a look at the code. First of all you'll have to decide when the JTable update its model or say it's data. I used formWindowOpened event to load data in JTable.
private JComboBox comboBox; //Above variable declared globally. private void formWindowOpened(java.awt.event.WindowEvent evt) { Object[][] rowData = new Object[5][1]; Object columnNames[] = {"Name of Item"}; DefaultTableModel tm = new DefaultTableModel(rowData, columnNames); jTable1.setModel(tm); /* * Below method creates the JComboBox in JTable. Check the method code below. * jTable1.getColumnModel().getColumn(0) : set the column index as per your need. */ setItemNameColumn(jTable1.getColumnModel().getColumn(0)); }
private void setItemNameColumn(TableColumn itemColumn) { comboBox = new JComboBox(); try { Connection con = variables.getDatabaseConnection(); PreparedStatement item_stmt = con.prepareStatement("select idwarehouse,NameOfProduct from warehouse;"); ResultSet item_rs = item_stmt.executeQuery(); while (item_rs.next()) { comboBox.addItem(new Item(item_rs.getInt("idwarehouse"), item_rs.getString("NameOfProduct"))); // Bind Name of product and index in ComboBox } con.close(); } catch (Exception e) { e.printStackTrace(); } comboBox.addActionListener(this); // Set action listener itemColumn.setCellEditor(new DefaultCellEditor(comboBox)); DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); renderer.setToolTipText("Click for combo box"); itemColumn.setCellRenderer(renderer); } // Bean for ComboBox public class Item { private int id; private String description; public Item(int id, String description) { this.id = id; this.description = description; } public int getId() { return id; } public String getDescription() { return description; } public String toString() { return description; } }
// Action listner that read the selected index every time and shows database index. @Override public void actionPerformed(ActionEvent e) { if (e.getSource().equals(comboBox)) { comboBox = (JComboBox) e.getSource(); Item item = (Item) comboBox.getSelectedItem(); if(item!=null){ System.out.println("Database Index:"+item.getId()); } } }That's it. All you need to put all code in your project. If you have any problem comment here.
0 comments :