2009-03-14 7 views
1

Ich möchte in der Lage sein, die Breite einer JTable basierend auf einem Prozentsatz der Gesamtbreite der Tabelle zu ändern. Der obige Code sieht so aus, als sollte er funktionieren, aber ich bekomme nur Spalten gleicher Breite, wenn ich ihn mit "setPreferredTableColumnWidths (table, new double [] {.01, .4, .2, .2, .2})" aufrufe;Ändern der Breite von Jtable-Spalten funktioniert nicht

Was könnte das Problem sein?

Antwort

0

Versuchen Sie, die Zeile hinzufügen:

table.doLayout();

Am Ende der Methode.

1

Ihr Code funktioniert gut, aber abhängig davon, wo Sie es nennen, kann die Tabelle eine Breite haben oder nicht. Im Konstruktor eines Panels (oder was auch immer die Tabelle enthält) gibt es noch keine Breite.

Ich habe den Aufruf Ihrer Methode in der Methode paint(). Aber achten Sie darauf, den Überblick zu behalten und nur einmal aufzurufen, oder die Spalten werden immer wieder neu skaliert.

@Override 
public void paint(Graphics g) { 
    super.paint(g); 

    if(! this.initialSizeSet){ 
     this.setPreferredTableColumnWidths(this.table, new double[] {0.1, 0.1, 0.5, 0.3}); 
     this.initialSizeSet = true; 
    } 
} 
Verwandte Themen