funzt so auch nicht ganz... sollte vielleicht erwähnen das mein Vector mit Strings gefüllt wird... diese dann in einem JTable ausgegeben werden. ich will jetzt nur als erste oder letzte Reihe in meine Table boolean haben...
geht das überhaupt?
weil so wie in deinem beispiel muss ja der ganze vector boolean sein.... oder?!?!? :?:
sollte vielleicht erwähnen das mein Vector mit Strings gefüllt wird... diese dann in einem JTable ausgegeben werden. ich will jetzt nur als erste oder letzte Reihe in meine Table boolean haben...
Ein Vector kann nur Objects enthalten, keine primitiven Typen (wie int oder boolean). Um primitive Typen einzufügen, braucht man ein Wrapper (wie Integer oder Boolean).
Code:
boolean b = true;
Vector v = new Vector();
v.add( new Boolean( b));
Mit dem JDK 1.5 ist aber das sogenannte Auto-Boxing eingeführt worden, damit kann man tatsächlich auch schreiben:
Code:
boolean b = true;
Vector v = new Vector();
v.add( b); //--- Auto-Boxing
Der Compiler generiert hier aber genau den gleichen Code, Performance und Memory-Verbrauch sind in beiden Fällen gleich, da das Wrapper-Objekt so oder so erzeugt wird.
BTW: das Autoboxing kann auch lustige Fehler produzieren:
Code:
Vector v = new Vector();
v.add( true); //--- auto-boxing -> v.add( new Boolean( true));
v.add( false); //--- auto-boxing -> v.add( new Boolean( false));
v.add( null);
for ( int i=0; i<v.size(); i++) {
Boolean bo = (Boolean)(v.elementAt( i));
boolean b = bo; //--- auto-boxing -> bo.booleanValue()
if ( b) System.out.println( "element #" + i + " is true");
}
OK, das Bespiel ist sinnlos und auch noch recht übersichtlich, aber etwas überraschend ist es doch, in der "harmlosen" Zuweisung b = bo eine NullPointerException zu bekommen...
mein Vectort liest Daten aus der DB aus... Der eine die Daten der andere die Spaltennamen. Diese beiden Vectoren über gebe ich an meinen JTable. funzt alles soweit auch ganz gut...
nur jetzt will ich noch zwei checkboxen je reihe haben weil ich noch zwei felder mehr brauche um in die neue db zu schreiben...
Du bist zu langsam, oben steht schon dreimal die Lösung.
Da Du Java 5 benutzt, nehme ich mal an, dass der Compiler Level noch auf 1.4 steht in der IDE. Benutzt Du Eclipse? Dann Project -> Properties -> Java Compiler und auf 5.0 stellen.
boah... jetzt steh ich ganz auf dem schlauch... wenn ich das im tutorial für jtable richtig verstanden habe müsste mir der table doch jetzt einfach eine checkbox anzeigen?!!?
sollte aber auch ohne es explizit zu schreiben gehen, wenn du java5 hast. :arrow: wie byto gesagt hat: schau mal ob dein compiler level richtig gesetzt ist, sonst nützt dir dein jdk 5.0 garnix
also irgendwie bekomm ich keine checkbox in meinen jtable... mit dem tutorial komm ich auch nicht klar... wo werden da denn die checkbox initialisiert oder was auch immer?!?!?
wenn ich daten aus der db auslesen, anzeigen will, die möglichkeit der veränderung geben möchte und dann diese daten wieder in eine neue db schreibe....
mach ich das denn über haupt so wie ich das lösen will? daten in zwei vectoren einlesen... vectoren an jtable übergeben dort anzeigen und verändern lassen... model von jtable auslesen und sql in db schreiben....
oder ist das vielleicht viel leichter zu realisieren?!?!
achso bei dem anzeigen möchte ich noch je datensatz zwei sachen abfragen mit hilfe einer checkbox...
ich hab keine ahnung, aber die strings in einen vector und den so in die tabelle wie du das oben gemacht hast ist sicherlich nicht so verkehrt.
schlecht ist aber, in den vector ein boolean speichern zu wollen. hier solltest du dir eine andere möglichkeit überlegen. welche funktion hat der boolean denn?
also eine richtige funktion hat der booleane eintrag nicht... ich will somit nur die checkboxen realisieren die ich für jede zeile brauche damit ich meine abfrage machen kann...
wenn ich das ganze auch anders in den table bekomme solls mir recht sein... sitze da schon den ganzen morgen dran... lol
Pro Spalte wird in einer JTable immer derselbe Renderer verwendet (das kann ein Label sein, eine Checkbox, oder irgendwas anderes).
Für Checkboxen ist es am einfachsten, ein DefaultTableModel zu nehmen, die Daten da reinfüllen, die Methode "getColumnClass" überschreiben und für eine Spalte "return Boolean.class" zu verwenden.