Wie benutzerdefinierte JTable cell-editor und cell-renderer
Habe ich eine JTable mit einem eigenen Tisch Rendern und benutzerdefinierter Zellen-editor gibt das Ergebnis im Bild
Ich habe das panel in der ersten Tabelle Zellen mit einer separaten Klasse erweitert JPanel. und fügen Sie der Tabelle Werte,
tbl.setCellEditor(new customCell());
tbl.getColumnModel().getColumn(0).setCellRenderer(new customCell());
DefaultTableModel dtm = (DefaultTableModel) tbl.getModel();
Vector v = new Vector();
v.add(new Panel());
v.add("Test");
dtm.addRow(v);
v.clear();
v.add(new Panel());
v.add("Test 2");
dtm.addRow(v);
- Und das ist meine Tabelle benutzerdefinierte Klasse erstellen, die diese Tabelle,
class customCell extends DefaultTableModel implements TableCellRenderer, TableCellEditor {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Panel p = new Panel();
table.setRowHeight(row, p.getHeight());
return p;
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
return new Panel();
}
public Object getCellEditorValue() {
return "";
}
public boolean isCellEditable(EventObject anEvent) {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean shouldSelectCell(EventObject anEvent) {
return true;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
public boolean stopCellEditing() {
return true;
}
public void cancelCellEditing() {
throw new UnsupportedOperationException("Not supported yet.");
}
public void addCellEditorListener(CellEditorListener l) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void removeCellEditorListener(CellEditorListener l) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
Mein problem ist, dachte das panel wird gezeigt, wie ich erwartet, ich kann nicht geben Sie in das Textfeld ein oder ändern Sie das Kontrollkästchen oder klicken Sie auf die Schaltfläche. bitte sagen Sie mir, wie man dieses Problem lösen.
InformationsquelleAutor der Frage Harsha | 2012-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
hinzufügen müssen, um die richtige
LayoutManager
Editable/non_Editable
Eigenschaften für bereits sichtbarJPanel
lassen genießen
InformationsquelleAutor der Antwort mKorbel
Ich würde stark vorschlagen, um die Wiederverwendung der Funktionalität in der Standard-Tabelle Renderer und Editoren, da gibt es viele Dinge, die falsch mit Ihrem code
Component
jeder Zeit. Stattdessen, verwenden Sie die gleiche Komponente aus, und ändern Sie einfach, dassComponent
imgetTableCellRendererComponent
MethodeComponent
UnsupportedOperationException
s oder durch Rückgabe nur leereString
sBack-up-meine vierte Punkt, ein kleines Zitat aus dem Editoren-Teil in das
JTable
tutorial:Als klar und deutlich erklärt, da müssen Sie implementieren, die das Ereignis auslösen-code:
dem Sie eindeutig vernachlässigt. Daher mein Rat zum starten von
AbstractCellEditor
statt der Implementierung das interface von Grund auf neuInformationsquelleAutor der Antwort Robin