Hallo habe ich eine Klasse ColorChooser (im net.java.dev.colorchooser.ColorChooser Paket)Pass Ereignisse in benutzerdefinierten JTable
Dies ist eine benutzerdefinierte Komponente verwendeten Farben genannt auszuwählen. Ich möchte eine JTable mit ColorChoosers in der zweiten Spalte anzeigen. Also habe ich meine eigene Table und es funktioniert:
@SuppressWarnings("serial")
class ColorChooserTableRenderer extends DefaultTableCellRenderer {
public static List<ColorChooser> colors;
public ColorChooserTableRenderer(int rows) {
colors = new ArrayList<ColorChooser>(rows);
for (int i = 0; i<rows ; i ++) {
colors.add(new ColorChooser());
}
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return colors.get(row);
}
}
melde ich mich in meinem Tisch:
JTable t = new JTable(5,3);
t.getColumn(t.getColumnName(1)).setCellRenderer(new ColorChooserTableRenderer(5));
Das Display ist gut. Es zeigt sogar die Quick-Info der ColorChoosers an, wenn ich mit der Maus über eine davon fahre. Das Problem ist, dass die ColorChooser keine MouseEvents erhalten.
Normalerweise, wenn Sie die Maus auf einem ColorChooser drücken und halten, erhalten Sie ein Popup-Fenster, mit dem Sie eine Farbe auswählen können. Wenn in der JTable die ColorChooser-Komponente das Mausereignis nicht empfängt.
Irgendwelche Lösungen?
Edit: Die Frage zu diesem leicht geändert werden kann:
Können Sie mir bitte JButtons in der zweiten Spalte, die wirklich funktionieren, die ein kleines Beispiel einer Tabelle geben? Wissen Sie, Tasten, die gedrückt werden können?
Sie wirklich nicht wollen, Farben statisch (oder öffentlichen oder nicht-fiinal) machen. –