Swing CheckBoxen werden nicht in jTable angezeigt

Melamed

Mitglied
Guten Abend!

Ich experimentiere gerade mit einer jTable und lade Informationen aus einer Datenbank (SQLite und Derby, bei beiden tritt der Fehler auf) in dieselbe.
Eine der Spalten in der Datenbank hat den Typ Boolean und ich achte darauf, dass ich die Spalte auch streng so behandle, jedoch zeigt mit die jTable einen String und keine CheckBox an, wie sie eigentlich sollte (vgl. How to Use Tables (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components))

Mein Code beim Füllen sieht so aus (aufs Wesentliche reduziert):
Java:
        cache = new Vector<Object[]>();
        ResultSet rs = Abfrage();
        while (rs.next()) {
                Object[] record = new Object[colCount];

                for (int i = 0; i < colCount; i++) {
                    switch (i) {                        
                        case 2:
                            System.out.println("Case 2");
                            try {
                                record[i] = new Boolean(rs.getBoolean(i + 1));
                            } catch (Exception e) {
                                System.out.println("Problem beim Füllen von Boolean");
                                System.out.println(e.getMessage());
                                System.out.println(e.getLocalizedMessage());
                                System.out.println(e.getClass());
                                record[i] = new Boolean(false);
                            }
                            break;

                        default:
                            System.out.println("case "+i);
                            record[i] = rs.getString(i + 1);
                    }

                }
                cache.addElement(record);
            }
            fireTableChanged(null); // notify everyone that we have a new table.

Beim Insert gibt es ein PreparedStatement mit setBoolean und der Tabellenvektor erkennt soweit ich feststellen kann auch alles als String oder Boolean.

Die Tabelle weniger, deshalb habe ich beschlossen, dass getClass etwas zu "modifizieren":
Java:
    @Override
    public Class<?> getColumnClass(int column) {
        System.out.println("col: -->"+column+" Klasse: "+getValueAt(0, column).getClass());
        return getValueAt(0, column).getClass();
    }

Vom Ergebnis bin ich etwas überrascht. Meine Tabelle hat 6 Spalten, davon ist die 3. (wenn man von 0 beginnt die 2.) die Boolean-Spalte.
Merkwürdigerweise sieht die Ausgabe der getColumnClass so aus:
Code:
col: -->0 Klasse: class java.lang.String
col: -->1 Klasse: class java.lang.String
col: -->2 Klasse: class java.lang.Boolean
col: -->3 Klasse: class java.lang.String
col: -->0 Klasse: class java.lang.String
col: -->1 Klasse: class java.lang.String
col: -->2 Klasse: class java.lang.Boolean

Und ich bekomme den Fehler:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
        at javax.swing.JTable$BooleanRenderer.getTableCellRendererComponent(JTable.java:5413)
        at javax.swing.JTable.prepareRenderer(JTable.java:5736)
        at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2108)
        at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:2010)
        at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1806)
        at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
        at javax.swing.JComponent.paintComponent(JComponent.java:765)

Etc, jedoch ohne Angabe, wo im Code der Hund begraben liegt

Wenn ich es mit der Standardvariante ausführe (obwohl diese eigentlich dasselbe Ergebnis liefern sollte) lautet die Ausgabe hier:
Code:
col: 0 class: class java.lang.Object
col: 1 class: class java.lang.Object
col: 2 class: class java.lang.Object
col: 3 class: class java.lang.Object
col: 0 class: class java.lang.Object
col: 1 class: class java.lang.Object
col: 2 class: class java.lang.Object
col: 3 class: class java.lang.Object
Und alles läuft - bis auf die CheckBox.

Dies ist übrigens die gesamte Ausgabe. Obwohl es 6 Spalten gibt geht die getColumnClass-Variante nur von 0-3. Mit der Standardvariante bin ich auch über die einzelnen Spalten gegangen, um herauszufinden, ob da alles so läuft, wie es sollte.
Auf die Spalten 5+6 wird jedoch nicht reagiert, möglicherweise weil sie ComboBoxen sind (funktionieren einwandfrei).

Hat jemand eine Idee, warum die Boolean-Checkboxen nicht angezeigt werden?
Danke im Voraus!
 

Enigma228

Bekanntes Mitglied
und wenn du ihm im Model den Boolean Wert aufzwingst??
Java:
@Override
public Class<?> getColumnClass(int columnIndex) {
	if(columnIndex==2){
		return Boolean.class;
	}else{
		return String.class;
	}
}
 

Melamed

Mitglied
Danke für die Antwort, aber auf die Idee bin ich auch gekommen.
Das Ergebnis ändert sich bei dieser Variante nicht - und ich habe auch dieselben Fehler.

Hast du eventuell eine Idee, wo diese ClassCastException geworfen werden könnte?
 

Melamed

Mitglied
Fehler gefunden...
Komm mir schön blöd vor...

Im
Code:
getValueAt
hatte ich stehen:
Java:
public Object getValueAt(int row, int col) {
       
        try {
            return (cache.elementAt(row))[col];
        } catch (ArrayIndexOutOfBoundsException aiou) {            
                return new String();
            }
        } catch (java.lang.ClassCastException cce){
            System.out.println("cce");
            return new Boolean(true);
        }
        catch(Exception e){
            System.out.println("im public mitkübl");
            return new Boolean(true);
        }

    }

Hier wird natürlich ein String übertragen und kein Boolean... Damit immer eine leere Zeile angezeigt wird, über die die Datenbank erweitert werden kann und mit irgendwas leerem gefüllt wird habe ich damals einfach einen leeren String genommen...

Lösung sieht so aus:
Java:
SimpleDateFormat ampm= new SimpleDateFormat("a");

public Object getValueAt(int row, int col) {
        DBConnection dbconn = new DBConnection(currentURL, this.dbkonf.getKlasse(), dbkonf.getUser(), dbkonf.getPassword());
        initDB();
        try {
            return (cache.elementAt(row))[col];
        } catch (ArrayIndexOutOfBoundsException aiou) {
            switch(col){
                case 0:
                    return dbconn.getNewID("Besuchergruppe", "ID");
                case 2:
                return ((ampm.format(new Date())).equals("PM")) ? new Boolean(true) : new Boolean(false);
                default:
                return new String();
            }
        } catch (java.lang.ClassCastException cce){
            System.out.println("cce");
            return new Boolean(true);
        }
        catch(Exception e){
            System.out.println("im public mitkübl");
            return new Boolean(true);
        }

    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U JavaFX CheckBoxen in GUI verschieben AWT, Swing, JavaFX & SWT 20
D JavaFX Dynamisch erzeugte Checkboxen aus VBox auslesen AWT, Swing, JavaFX & SWT 3
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
T Dynamisch mehrere Checkboxen anlegen AWT, Swing, JavaFX & SWT 2
D Seltsames Verhalten meiner CheckBoxen AWT, Swing, JavaFX & SWT 7
S Swing Checkboxen in Einträgen des Typs DefaultMutableTreeNode AWT, Swing, JavaFX & SWT 23
S AWT Erstellen von Checkboxen AWT, Swing, JavaFX & SWT 33
M Checkboxen Namen setzten über Parameter => Abfragen? AWT, Swing, JavaFX & SWT 2
F checkboxen auslesen/ansprechen AWT, Swing, JavaFX & SWT 1
X Checkboxen erstellt mit MouseClicked event AWT, Swing, JavaFX & SWT 10
J Hintergrundfarbe von CheckBoxen in einer JTable AWT, Swing, JavaFX & SWT 4
T JTree mit Checkboxen anpassen AWT, Swing, JavaFX & SWT 7
R Checkboxen - Event mit Controller abfangen AWT, Swing, JavaFX & SWT 7
S swt table mit checkboxen: wie nachträglich im code setzen? AWT, Swing, JavaFX & SWT 6
D Mehrere CheckBoxen im TableModel wechselseitig ausschließen AWT, Swing, JavaFX & SWT 5
G Namen mehrer Checkboxen abfragen AWT, Swing, JavaFX & SWT 7
F Checkboxen in JTable abfragen AWT, Swing, JavaFX & SWT 2
M@rk Jtree Checkboxen AWT, Swing, JavaFX & SWT 2
G JTree mit Checkboxen und Problem mit isSelected() AWT, Swing, JavaFX & SWT 2
G Aktionen bei Checkboxen AWT, Swing, JavaFX & SWT 2
R Checkboxen plazieren AWT, Swing, JavaFX & SWT 3
M JList mit checkboxen AWT, Swing, JavaFX & SWT 2
O Dynamische Checkboxen AWT, Swing, JavaFX & SWT 21
TheJavaKid .isSelected() bei AWT Checkboxen? AWT, Swing, JavaFX & SWT 2
F Checkboxen eines anderen Panels ansprechen AWT, Swing, JavaFX & SWT 3
C Checkboxen bzw. CheckboxGroup AWT, Swing, JavaFX & SWT 3
T Checkboxen layouten AWT, Swing, JavaFX & SWT 20
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
melaniemueller JavaFX Beispiel kann nicht ausgeführt werden AWT, Swing, JavaFX & SWT 4
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
W Können Animationen in JavaFX "verschluckt" werden? AWT, Swing, JavaFX & SWT 8
M Umwandlung in den HSV-Farbraum lässt die Grafik pixelig werden AWT, Swing, JavaFX & SWT 8
H JButtons werden nicht angezeigt AWT, Swing, JavaFX & SWT 5
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
ProggersWorld JavaFX Icons im TreeView werden nicht angezeigt AWT, Swing, JavaFX & SWT 1
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
J e(fx)clipse funkioniert nicht / imports werden Rot gekennzeichnet AWT, Swing, JavaFX & SWT 1
ronbot77 JavaFX Rechtecke werden nicht neu gezeichnet AWT, Swing, JavaFX & SWT 8
R FXML File kann nicht hinzugefügt werden! AWT, Swing, JavaFX & SWT 2
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
H String teilen, damit bei JLabel keine Punkte am Ende angezeigt werden AWT, Swing, JavaFX & SWT 4
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
L Image kann nicht gefunden werden AWT, Swing, JavaFX & SWT 1
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
MoxxiManagarm JavaFX Auch ich versuche mit JavaFX warm zu werden AWT, Swing, JavaFX & SWT 9
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
L Swing JPanels werden nicht angezeigt! AWT, Swing, JavaFX & SWT 7
ralfb1105 Swing SwingWorker - max 10 Threats werden gestartet !? AWT, Swing, JavaFX & SWT 5
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
A Swing Meine JButtons werden nicht angezeigt bitte helft mir AWT, Swing, JavaFX & SWT 2
J JavaFX Elemente werden nicht zu TableView hinzugefügt AWT, Swing, JavaFX & SWT 3
SchmidiMC 2D-Grafik Grafiken werden nicht gezeichnet AWT, Swing, JavaFX & SWT 2
J Controler werden nicht inialisiert - Warum ? AWT, Swing, JavaFX & SWT 12
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
N Swing JButtons werden nach repaint() doppelt dargestellt AWT, Swing, JavaFX & SWT 12
R JRE, NPAPI Java Plugins: Werden Plugins weiterhin bereit gestellt? AWT, Swing, JavaFX & SWT 5
I JAVA 8, JAVAFX und Eclipse – muss Eclipse extra eingerichtet werden? AWT, Swing, JavaFX & SWT 9
L Swing JComboBox kann nicht erstellt werden! AWT, Swing, JavaFX & SWT 2
DerMauri JavaFX Raspberry Pi meldet "Hauptklasse konnte nicht gefunden oder geladen werden" AWT, Swing, JavaFX & SWT 10
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
J Swing Strings werden nicht in Textfeld geschrieben AWT, Swing, JavaFX & SWT 8
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
MrSnake ComboBox-Einträge werden unsichtbar AWT, Swing, JavaFX & SWT 0
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
X JavaFX Tooltips für XYChart-Knoten werden nicht angezeigt! AWT, Swing, JavaFX & SWT 3
P JavaFX - XCF Datei von Gimp kann nicht angezeigt werden AWT, Swing, JavaFX & SWT 3
J Meine ProgBar und ProgIndi werden nicht aktualisiert AWT, Swing, JavaFX & SWT 28
A Swing Buttons werden trotz setVisible nicht dargestellt AWT, Swing, JavaFX & SWT 14
D JavaFX GUI Komponenten werden langsam bei größerer Datenmenge AWT, Swing, JavaFX & SWT 6
C AWT Textfelder werden nicht automatisch angezeigt AWT, Swing, JavaFX & SWT 2
D Buttons werden nebeneinander angeordnet AWT, Swing, JavaFX & SWT 9
C Textfeld und Label werden nicht angezeigt (Ubuntu) AWT, Swing, JavaFX & SWT 2
9 Swing Registrierte Knöpfe mit Bildern werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
W Swing Farbige JPanels auf JFrame werden nicht gezeigt. Was mach ich falsch? AWT, Swing, JavaFX & SWT 7
Z Swing Swing: Elemente werden doppel/verschoben gezeichnet, sind teils unsichtbar etc... AWT, Swing, JavaFX & SWT 10
L Tooltips werden nicht mehr angezeigt AWT, Swing, JavaFX & SWT 5
R Swing Buttons werden nicht angezeigt AWT, Swing, JavaFX & SWT 4
K JTabs werden nicht angezeigt AWT, Swing, JavaFX & SWT 6
kaoZ Swing JToolBar, ImageIcon werden teilweise verdeckt AWT, Swing, JavaFX & SWT 0
S Swing Tooltips werden nicht angezeigt AWT, Swing, JavaFX & SWT 5
J JavaFX Eigene ListCell Problem(Objekte werden doppelt angezeigt) AWT, Swing, JavaFX & SWT 1
D JavaFX Mysteriöser Dropshadow hinter Tablabelschrift - Schatten kann nicht entfernt werden (FXML + CSS) AWT, Swing, JavaFX & SWT 6
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
A Swing JColorChooser's Icon will nicht getauscht werden. AWT, Swing, JavaFX & SWT 10
G JavaFX TableView - Änderungen werden nicht übernommen. AWT, Swing, JavaFX & SWT 3
A Swing Bilder werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
A Swing Parameter werden bei Funktionsaufruf nicht ausgegeben AWT, Swing, JavaFX & SWT 2
R Komponenten werden erst nach maximierung des Frames sichtbar (Linux) AWT, Swing, JavaFX & SWT 5
D Image soll langsam sichtbar werden AWT, Swing, JavaFX & SWT 4
J Abbrechen muss immer einmal mehr gedrückt werden AWT, Swing, JavaFX & SWT 3
A Swing ActionListener kann nicht hinzugefügt werden AWT, Swing, JavaFX & SWT 4
J Zwei GUIs - Nach button-Klick soll ein Wert an die andere GUI übergeben werden AWT, Swing, JavaFX & SWT 15
S Swing Inhalte von Scroll-Panes werden nicht gezeichnet AWT, Swing, JavaFX & SWT 9
Z Swing JPanel soll größer werden als Parent Container (überlappen) AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben