![]() |
The Java Developers Almanac 1.4Order this book from Amazon. |
e960. Using a List JSpinner as a Cell Editor in a JTable ComponentIf the possible values allowed in a column must be from a small fixed set of values, a spinner might be appropriate as the cell editor for that column. By using a list spinner, it is impossible for the user to input an invalid value.JTable table = new JTable(); DefaultTableModel model = (DefaultTableModel)table.getModel(); // Add some columns model.addColumn("A", new Object[]{"item1"}); model.addColumn("B", new Object[]{"item2"}); // These are the spinner values String[] values = new String[]{"item1", "item2", "item3"}; // Set the spinner editor on the 1st visible column int vColIndex = 0; TableColumn col = table.getColumnModel().getColumn(vColIndex); col.setCellEditor(new SpinnerEditor(values)); // If you want to make the cell appear like a spinner in its // non-editing state, also set the spinner renderer col.setCellRenderer(new SpinnerRenderer(values)); public class SpinnerEditor extends AbstractCellEditor implements TableCellEditor { final JSpinner spinner = new JSpinner(); // Initializes the spinner. public SpinnerEditor(String[] items) { spinner.setModel(new SpinnerListModel(java.util.Arrays.asList(items))); } // Prepares the spinner component and returns it. public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { spinner.setValue(value); return spinner; } // Enables the editor only for double-clicks. public boolean isCellEditable(EventObject evt) { if (evt instanceof MouseEvent) { return ((MouseEvent)evt).getClickCount() >= 2; } return true; } // Returns the spinners current value. public Object getCellEditorValue() { return spinner.getValue(); } }
e954. Preventing Invalid Values in a Cell in a JTable Component e955. Setting the Activation Click Count for a Table Cell Editor in a JTable Component e956. Programmatically Starting and Stopping Cell Editing in a JTable Component e957. Creating a Text Field That Mirrors the Value in the Anchor Cell in a JTable Component e958. Disabling User Edits in a JTable Component e959. Using a JComboBox in a Cell in a JTable Component
© 2002 Addison-Wesley. |