Hallo, ich habe mir einen TableCellEditor zusammengeklaut, der aus einer meiner Tabellenspalten statt dem normalen textfeld einen jspinner macht. das funktioniert soweit auch, nur werden die previous/next-buttons des spinners erst beim fokus auf das feld sichtbar gesetzt. ich habe die anforderung, dass die buttons (so wie bei jedem spinner) immer sichtbar sind, ob die zelle den fokus hat oder nicht.
Java:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class Spinner {
public static void main(String[] args) {
JTable table = new JTable(2, 1);
// Set up the table
table.getColumnModel().getColumn(0).setCellEditor(new
NumberSpinnerTableCellEditor());
table.getModel().setValueAt(new Integer(0), 0, 0);
table.getModel().setValueAt(new Integer(0), 1, 0);
JScrollPane scrollPane = new JScrollPane(table);
// Put the areas on one panel
JPanel contentPane = new JPanel(new BorderLayout());
contentPane.add(scrollPane, BorderLayout.CENTER);
// Show the frame
JFrame frame = new JFrame("Spinner Editor Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(contentPane);
frame.pack();
frame.setVisible(true);
}
// The "Spinner" editor for the table.
private static class NumberSpinnerTableCellEditor extends
AbstractCellEditor implements TableCellEditor {
private JSpinner editor;
public NumberSpinnerTableCellEditor() {
editor = new JSpinner();
editor.setBorder(null);
}
public Object getCellEditorValue() {
return editor.getValue();
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
editor.setValue(value);
return editor;
}
}
}