Hallo,
irgendwie funktionieren meine Checkboxen in der JTable nicht so wie ich möchte.
Der Text wird nicht immer angezegt und selektiert werden sie auch nicht korrekt.
Kann mir wer sagen, was man da ändern muss, irgendwie raff ich das nicht so ganz.
Die Renderer und Editoren sind immer noch ein Rätsel für mich.
mfg Verjigorm
irgendwie funktionieren meine Checkboxen in der JTable nicht so wie ich möchte.
Der Text wird nicht immer angezegt und selektiert werden sie auch nicht korrekt.
Kann mir wer sagen, was man da ändern muss, irgendwie raff ich das nicht so ganz.
Die Renderer und Editoren sind immer noch ein Rätsel für mich.
mfg Verjigorm
Code:
package jtableButton;
import java.awt.Component;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class JCheckBoxTableExample extends JFrame {
public JCheckBoxTableExample() {
super("JCheckboxTable Example");
DefaultTableModel dm = new DefaultTableModel(new String[]{"CheckBox"},2);
// dm.setDataVector(new Object[][] { { "Checkbox 1", "foo" },
// { "Checkbox 2", "bar" } }, new Object[] { "CheckBox", "String" });
JTable table = new JTable(dm);
table.getColumn("CheckBox").setCellRenderer(new CheckboxRenderer());
table.getColumn("CheckBox").setCellEditor(
new CheckboxEditor(new JCheckBox()));
JScrollPane scroll = new JScrollPane(table);
getContentPane().add(scroll);
setSize(400, 100);
setVisible(true);
}
public static void main(String[] args) {
JCheckBoxTableExample frame = new JCheckBoxTableExample();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
class CheckboxEditor extends DefaultCellEditor {
protected JCheckBox checkbox;
public CheckboxEditor(JCheckBox _checkBox) {
super(_checkBox);
checkbox = new JCheckBox("BOX");
checkbox.setOpaque(true);
checkbox.setSelected(true);
// checkbox.addActionListener(new ActionListener() {
// public void actionPerformed(ActionEvent e) {
// fireEditingStopped();
// }
// });
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
if (isSelected) {
checkbox.setForeground(table.getSelectionForeground());
checkbox.setBackground(table.getSelectionBackground());
} else {
checkbox.setForeground(table.getForeground());
checkbox.setBackground(table.getBackground());
}
// System.out.println(value);
// checkbox.setText((value == null) ? "" : value.toString());
checkbox.setText(checkbox.getText());
return checkbox;
}
}
class CheckboxRenderer extends JCheckBox implements TableCellRenderer {
public CheckboxRenderer() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(UIManager.getColor("Checkbox.background"));
}
// System.out.println(value);
// setText((value == null) ? "" : value.toString());
return this;
}
}