Mega Code Archive

 
Categories / Java / Swing Components
 

ComboBox Table

/* Core SWING Advanced Programming  By Kim Topley ISBN: 0 13 083292 8        Publisher: Prentice Hall   */ import javax.swing.*; import javax.swing.table.*; import java.awt.event.*; public class ComboBoxTable {   public static void main(String[] args) {     try {         UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");     } catch (Exception evt) {}        JFrame f = new JFrame("Combo Box Table");     JTable tbl = new JTable(new ComboBoxTableModel());          // Create the combo box editor     JComboBox comboBox = new JComboBox(ComboBoxTableModel.getValidStates());     comboBox.setEditable(true);     DefaultCellEditor editor = new DefaultCellEditor(comboBox);     // Assign the editor to the second column     TableColumnModel tcm = tbl.getColumnModel();     tcm.getColumn(1).setCellEditor(editor);     // Set column widths     tcm.getColumn(0).setPreferredWidth(200);     tcm.getColumn(1).setPreferredWidth(100);     // Set row heighht     tbl.setRowHeight(20);     tbl.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);     tbl.setPreferredScrollableViewportSize(tbl.getPreferredSize());       f.getContentPane().add(new JScrollPane(tbl), "Center");     f.pack();     f.addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent evt) {         System.exit(0);       }     });     f.setVisible(true);   } } class ComboBoxTableModel extends AbstractTableModel {   // Implementation of TableModel interface    public int getRowCount() {     return data.length;   }   public int getColumnCount() {     return COLUMN_COUNT;   }   public Object getValueAt(int row, int column) {     return data[row][column];   }   public Class getColumnClass(int column) {     return (data[0][column]).getClass();   }   public String getColumnName(int column) {     return columnNames[column];   }   public boolean isCellEditable(int row, int column) {     return column == 1;   }   public void setValueAt(Object value, int row, int column) {     if (isValidValue(value)) {       data[row][column] = value;       fireTableRowsUpdated(row, row);     }   }   // Extra public methods   public static String[] getValidStates() {     return validStates;   }   // Protected methods   protected boolean isValidValue(Object value) {     if (value instanceof String) {       String sValue = (String)value;       for (int i = 0; i < validStates.length; i++) {         if (sValue.equals(validStates[i])) {           return true;         }       }     }     return false;   }   protected static final int COLUMN_COUNT = 2;        protected static final String[] validStates = {      "On order", "In stock", "Out of print"   };   protected Object[][] data = new Object[][] {     { "Core Java Volume 1", validStates[0] },     { "Core Java Volume 2", validStates[0] },     { "Core Web Programming", validStates[0] },     { "Core Visual Basic 5", validStates[0] },     { "Core Java Foundation Classes", validStates[0] }   };      protected static final String[] columnNames = {     "Book Name", "Status"   }; }