ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
187
187
EMPFEHLEN
-
Hallo,
ich habe folgendes vor:
In jeder Zelle einer einspaltigen Tabelle ist ein mehrzeiliger Text und Button.
Der Renderer ist ein JComponent und hat also n JLabels und 1 JButton.
Nun muss der Klick in die Zelle (Background und Labels) Action X auslösen, der Buttonklick jedoch Action Y.
Wie sieht denn ein CellEditor für so einen Fall aus?
-
10.08.11 10:26 #2
Hi,
also ich würde vorschlagen, dass du einfach einen Selectionlistener auf die JTable legst, dadurch bekommst du dann die jeweilige Row. (Aktion x)
Um nun ein Event über den Button abzufeuern, kannst du diesen einfach vorher definieren und einen ActionListener setzen. (Aktion y)
Viele Grüße
Sporticus
-
Also ich habe es ein wenig umgebaut, da ich dachte das Problem verstanden zu haben.
Also, JTable list (hehe) ist einspaltig und hat ein Model das in der getValueAt einen JComponent als Rückgabewert liefert. Dieses Component (weiter - Wrapper) ist dann mit mehreren Labels und einem Button versehen.
Der Renderer der Tabelle kümmert sich nur um Farben des Wrappers.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
@Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { DHPEVDOperationWrapper wrapper = (DHPEVDOperationWrapper)value; // Hintergrund und Vordergrundfarben if (isSelected){ // Wenn selektiert wrapper.setForeground(DHPAsgard.getLayout().getColorSchema().getTableListColorSchema().getSelectedForegroundColor()); wrapper.setBackground(DHPAsgard.getLayout().getColorSchema().getTableListColorSchema().getSelectedBackgroundColor()); } else{ // Sonst if (row%2 != 0) // gerade wrapper.setBackground(DHPAsgard.getLayout().getColorSchema().getTableListColorSchema().getLineOddColor()); else // ungerade wrapper.setBackground(DHPAsgard.getLayout().getColorSchema().getTableListColorSchema().getLineEvenColor()); wrapper.setForeground(DHPAsgard.getLayout().getColorSchema().getTableListColorSchema().getTextColor()); } return wrapper; }
Der Editor sieht so aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
public class DHPScenarioListEditor extends AbstractCellEditor implements TableCellEditor { private static final long serialVersionUID = 920103338796844890L; @Override public Object getCellEditorValue() { System.err.println("Editor.getCellEditorValue"); return null; } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { System.err.println("Editor an [" + row + ":" + column + "]"); return (Component)table.getValueAt(row, column); } }
Diese Ausgaben vom CellEditor sehe ich abe nie.
Der Editor wird dabei wie folgt gesetzt:
Code :1 2
list.setCellEditor(new DHPScenarioListEditor()); list.getColumnModel().getColumn(0).setCellEditor(new DHPScenarioListEditor());
Trotzdem scheint es nicht zu greifen.
Was mache ich da falsch?
-
Problem gelöst, habe im Model vergessen, isCellEditable zu überschreiben.
Ähnliche Themen
-
JTable: CellEditor pro Zelle anstatt pro Spalte?
Von Ceppi im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 12.04.11, 22:06 -
JComboBox als CellEditor in JTable zeigt Elemente nicht sofort an
Von ElJarno im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 30.07.10, 08:53 -
Probleme mit CellEditor
Von TMDolphin im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 18.01.09, 09:17 -
CellEditor
Von darksmilie im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 29.08.06, 16:22 -
JTable CellEditor editingCanceled
Von nils_eckert im Forum JavaAntworten: 0Letzter Beitrag: 30.01.05, 20:08





Zitieren
Login





