|
|
Best books about JAVA programming:
|
JAVA JTable JSpinner
This example shows how to insert JSpinner as a
table cell editor.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import javax.swing.table.*;
public class spinnerTable {
public static void main(String[] args)
{
spinnerTable sp=new spinnerTable();
sp.init();
}
void init()
{
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));
table.setRowHeight(50);
JFrame frame=new JFrame("JSpinner in JTable");
frame.getContentPane().add(new JScrollPane(table));
frame.pack();
frame.show();
}
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();
}
}
}
|
|
|