📄 e960. using a list jspinner as a cell editor in a jtable component.txt
字号:
If 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();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -