Frage

Vorwort. Ich bin schrecklich mit Java, und schlimmer noch mit Java-UI-Komponenten

Ich habe mehr verschiedene Tutorials zu finden, wie Tasten, um Tabellen hinzuzufügen, aber ich mit dem Hinzufügen von Kontrollkästchen bin zu kämpfen. Ich brauche eine Spalte zu haben, die ein Textfeld auf Standard tickte zieht (CellRenderers i Griffe denken, dass), dann auf klicken tickbox, unmarkiert die Box, redraws sagte Feld und feuert ein Ereignis irgendwo ich verfolgen kann.

Zur Zeit habe ich eine benutzerdefinierte Zellrenderer:

public class GraphButtonCellRenderer extends JCheckBox implements TableCellRenderer {
public GraphButtonCellRenderer() {
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    if(isSelected)
        setSelected(true);
    else
        setSelected(false);
    setMargin(new Insets(0, 16, 0, 0));
    setIconTextGap(0);

    setBackground(new Color(255,255,255,0));
    return this;
}}

Welche verarbeitet derzeit das Kontrollkästchen zu zeichnen, aber nur Zecken und unmarkiert das Feld, wenn diese Zeile ausgewählt ist. Aber ich weiß nicht, wie die Ereignisse zu verarbeiten. Wirklich, was ich frage, ist möglicherweise ein Link zu einem guten Tutorial, wie Kontrollkästchen hinzuzufügen sauber zu einem JTable. Alle assist sehr geschätzt:)

War es hilfreich?

Lösung

Es gibt keine Notwendigkeit, einen eigenen Tisch Renderer zu erstellen. Hier ist ein einfacheres Beispiel . Nur ein Modell benutzerdefinierte Tabelle erstellen und für eine bestimmte Spalte gibt die Klasse Boolean für:

public Class getColumnClass(int column)

Wenn Sie die Spalte wollen editierbar sein, return true für

public boolean isCellEditable(int row, int column)

JTable kümmert sich um die Rendering für Sie.

Ein anderes Beispiel ist hier.

Andere Tipps

Wie Peter sagen, seine einfache Anwendung erweitert DefaultTableModel Klasse, ab:

class NewTableModel extends DefaultTableModel{
        public Class<?> getColumnClass(int columnIndex) {
            return getValueAt(0, columnIndex).getClass();
        }
    }

Hier ist ein einfach eher erarbeiten Beispiel ein mit TableCellRenderer und TableCellEditor. Siehe auch Konzepte: Editoren und Renderers .

Nachtrag: @Jay Askren der Punkt ist gut gemacht. Der Standard-Renderer für Boolean.class, wie in der Anleitung beschrieben wird, kann alles, was Sie sein müssen.

Die einfachste Lösung ist die DefaultTableModel zu verwenden und Boolean-Objekt als Wert verwendet werden.

In der Swing-Designer-Set-Spalte Typ boolean

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top