Folgendes: Ich habe eine Klasse xy. In der Klasse wird eine GUI angelegt.
Nun möchte ich in eine JTable die Maße der Spalten definieren.
Das mache ich auf normalen Weg so:
Im Konstuktor:
Java:
TableColumn col = table.getColumnModel().getColumn(0);
col.setMaxWidth(30);
Jetzt möchte ich das nicht 15 Mal schreiben, sondern eine Methode dafür benutzen (Mit einer Schleife).
Ungefähr so:
Java:
publicvoidspaltenbreite(int spalte,int laenge){TableColumn col = table.getColumnModel().getColumn(spalte);
col.setMaxWidth(laenge);}
Das geht jetzt so nicht. Kann ich so einen Fall überhaupt lösen?
doch es geht so bzw. du unterläßt es den Fehler zu beschreiben, da kann man kaum helfen,
wenn die Variable table unbekannt ist muss sie z.B. als Parameter auch übergeben werden usw.
ich habe eine Methode
Java:
/**
* Setzt die Spaltenbreiten in einer JTable.
*
* @param table
* @param sizes
*/publicstaticvoidsetColumnSizes(JTable table,int... sizes){for(int i =0; i < sizes.length; i++){TableColumn col = table.getColumnModel().getColumn(i);
col.setPreferredWidth(sizes[i]);}}
bis jetzt hast Du ja nur die zwei Zeilen in eine Methode ausgelager, was erst mal wenig Sinn macht.
Wenn ich's richtig verstanden habe soll mittels einer Methode die selbe Spaltenbreite für alle Spalten gesetzt werden, dafür muss man einfach nur mittels Schleife über die TableColumns des TableColumnModels iterieren und die Breite setzen. Alle dazu notwendigen Informationen liefert das TableColumnModel
Danke es funzt. Hab die ganze Nacht an dem Ding rumgemacht.
Es hat nur gefehlt das ich die JTable mitübergebe.
Ich verstehe zwar nicht warum ich das machen muss. Denn in der Klasse habe ich ja
per "private JTable table" die "table" schon bekannt gemacht.
Dann müsste er doch die table in der Methode schon kennen?
Ich verstehe zwar nicht warum ich das machen muss. Denn in der Klasse habe ich ja per "private JTable table" die "table" schon bekannt gemacht.
Dann müsste er doch die table in der Methode schon kennen?
weiterhin treibst du dir, gewollt oder nicht, Späße anderen Informationen vorzuenthalten
- kompiliert der Code ja oder nein? wenn nicht dann gibt es kein entsprechendes Attribtut, dann bist du vielleicht in einer anderen Klasse
- wenn es kompiliert was ist exakt der Fehler, passiert einfach nichts oder gibt es eine Exception, vielleicht eine NullPointerException?
bei letzteren wäre ein Standardfehler zu vermuten, dass das Attribut null verbleibt, in der Initialisierung eine gleichnamige lokale Variable angelegt wird
alles ist durch ausführliche Informationen und Code posten zu klären,
nur komische Fragen zu stellen hilft dagegen nicht weiter..
Sorry, ich will hier keine Späße treiben. Bin nur völlig übermüdet. Ich will auch keine 300 Zeilen Code hier posten, wo die Hälfte keine Rolle spielt.
wenn es kompiliert was ist exakt der Fehler, passiert einfach nichts oder gibt es eine Exception, vielleicht eine NullPointerException?
bei letzteren wäre ein Standardfehler zu vermuten, dass das Attribut null verbleibt, in der Initialisierung eine gleichnamige lokale Variable angelegt wird
publicclassTest{JLabel a;JLabel b;publicTest(){
a =newJLabel("a");JLabel b =newJLabel("b");test2();}privatevoidtest2(){// a ist hier ein JLabel// b ist null}}