Swing JCheckBox in einer JTable

ZoOo4

Mitglied
Moin Moin,
wie die Überschrift schon sagt, brauche ich eine CheckBox in einer JTable. Allerdings habe ich entweder Schwierigkeiten um meinen Checkboxrenderer richtig zu programmieren oder ich mache es schlicht und einfach komplett falsch. Da ich jetzt schon einige Tage am rumbasteln bin und auch mehrere Möglichkeiten ausprobiert habe, wollte ich einfach mal euch fragen ob ihr den Fehler findet.

Also ich binde meinen Renderer so ein:
Java:
table = new JTable(data, columnNames);
		table.getColumn("Column1").setCellRenderer(new JTableCheckbox());
		table.setModel(new DefaultTableModel(data,columnNames));
		scrollPane.setViewportView(table);

Die Rendererklasse sieht folgendermaßen aus:
Java:
import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;


class JTableCheckbox implements TableCellRenderer{
	public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
		if (value==null) return null;
	    return new JCheckBox();
	}
}

Alternativ habe ich es schon probiert mit:
Java:
class RadioButtonRenderer implements TableCellRenderer {
  public Component getTableCellRendererComponent(JTable table, Object value,
                   boolean isSelected, boolean hasFocus, int row, int column) {
    if (value==null) return null;
    return (Component)value;
  }
}

Kennt/Seht ihr den Fehler?

MfG
ZoOo4
 
Zuletzt bearbeitet:
> wie die Überschrift schon sagt, brauche ich eine CheckBox in einer JTable.
passt nicht ganz zur Überschrift mit RadioButton?

Fehler sind in vielen Dimensionen zu sehen, aber was konkret stört dich denn, was hast du vor, was ist dein Problem im speziellen?

ein weites Feld an Fehlern von dir:
üblicherweise sollte eine JTable etwa tun, nämlich die Daten des Models repräsentieren,
deine Komponenten zeigen aber, falls sie funktionieren, nichts bzw. die Default-Werte an,
da passiert nichts weiter im Hintergrund,
bzw. das betrifft die erste Variante, deine zweite geht ja anscheinend davon aus, dass im Model selber JComponent enthalten sind?!

abgesehen von dieser unpraktikablen Idee, die hoffentlich nicht durch entsprechende Daten unterstützt wird,
verrätst auch nichts über die Daten in der Tabelle in dieser Spalte, welcher Typ usw.

-----

'CheckBox in JTable' ist übrigens ein Standard-Thema, gut überall zu suchen,
wenn im Model boolean-Werte stehen dann ist das mit einer Zeile schnell gemacht, von der API fertig unterstützt
 
Zuletzt bearbeitet von einem Moderator:
> wie die Überschrift schon sagt, brauche ich eine CheckBox in einer JTable.
passt nicht ganz zur Überschrift mit RadioButton?

Entschuldigung, ich meinte natürlich eine CheckBox und dabei pass ich schon immer auf, dass alles richtig formuliert ist...-.-'.

Ich glaube ich habe mich etwas undeutlich ausgedrückt. Ich habe eine Spalte in meiner JTable in der nur eine CheckBox angezeigt werden soll. Leider wird immer nur die toString-Methode angezeigt und das wollte ich beheben.

'CheckBox in JTable' ist übrigens ein Standard-Thema, gut überall zu suchen,
wenn im Model boolean-Werte stehen dann ist das mit einer Zeile schnell gemacht, von der API fertig unterstützt

Ist mir sehr wohl bekannt aber ich bin jetzt schon einige Tage an rumbasteln - wie gesagt und habe das Gefühl, dass ich irgendeinen Flüchtigkeitsfehler gemacht habe. Deswegen wollte ich nachfragen ob in meiner Klasse wirklich ein Flüchtigkeitsfehler steckt oder alles totaler Murks ist.

ein weites Feld an Fehlern von dir:
üblicherweise sollte eine JTable etwa tun, nämlich die Daten des Models repräsentieren,
deine Komponenten zeigen aber, falls sie funktionieren, nichts bzw. die Default-Werte an,
da passiert nichts weiter im Hintergrund,
bzw. das betrifft die erste Variante, deine zweite geht ja anscheinend davon aus, dass im Model selber JComponent enthalten sind?!

Ich habe eine Methode, die die Tabelle beschreibt und so weiter.Das funktioniert auch alles wie es soll, jedoch habe ich genau eine Spalte in denen die Checkboxen angezeigt werden sollen. Das funktioniert jedoch nicht 🙁.
 
> Ich habe eine Spalte in meiner JTable in der nur eine CheckBox angezeigt werden soll. Leider wird immer nur die toString-Methode angezeigt und das wollte ich beheben.

hmm, der zweite Renderer könnte für diese ungewöhnliche Anforderung doch was machen,
ich persönlich kann jetzt aus dem Kopf dazu nichts bestimmtes erkennen,
wenn du ein komplettes möglichst kurzes Testprogramm mit Daten mit JCheckBox usw. posten würdest, dann vielleicht eher was zu entdecken,
wobei du immer noch nicht gesagt hast, was eigentlich schief läuft, was wird denn jetzt angezeigt statt String oder immer noch String?

boolean und dann JCheckBox dazu fällt also flach?
überlege lieber nochmal stark, das wäre eine sehr bequeme, einfache, standardisierte Umsetzung,
und was kann eine JCheckBox schon mehr als einen boolean-Wert zu speichern außer Darstellungsdesign?
 
Hi!
Ich hatte vor kurzem das selbe Problem, nur bei einem JTree.
Vielleicht hilft dir mein Thread ja weiter

Java programmieren aus Leidenschaft

Danke 🙂 ein bisschen habe ich schon reingeguckt aber ich muss mich da jetzt erstmal einen Moment ransetzen um zu wissen ob es mir weiterhilft.

hmm, der zweite Renderer könnte für diese ungewöhnliche Anforderung doch was machen,
ich persönlich kann jetzt aus dem Kopf dazu nichts bestimmtes erkennen,
wenn du ein komplettes möglichst kurzes Testprogramm mit Daten mit JCheckBox usw. posten würdest, dann vielleicht eher was zu entdecken,
wobei du immer noch nicht gesagt hast, was eigentlich schief läuft, was wird denn jetzt angezeigt statt String oder immer noch String?

Also bei mir wurde immer nur die tostring-Methode angezeigt, obwohl ich eine Checkbox haben wollte. Jetzt habe ich beim Schreiben des Testprogrammes gemerkt, dass meine Methode funktioniert und eine Checkbox tatsächlich angezeigt wird. Nur in meinem größeren Programm werden diese nicht angezeigt. Das heisst, dass diese durch irgendwas unterdrückt werden müssen. Kann es durch eine Scrollpane zu so etwas kommen?

boolean und dann JCheckBox dazu fällt also flach?
Verstehe ich das falsch oder kann man auch den grafischen Effekt einer Checkbox durch einen Boolean in der betroffenden Zeile bewirken?
 
Okay dann weiß ich jetzt erstmal, dass meine Klassen gar nicht so falsch geschrieben waren. Danke erstmal an euch beide. Bewertungen sind raus und closed 🙂
 

Neue Themen


Zurück
Oben