PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JScrollpane


Antineutrino
2004-02-20, 09:34:11
Ich habe eine Tabelle in einem JScrollPane, doch die horizontale Scrolleiste wird nicht angezeigt, egal wie viel auch in der Tabelle steht. Die vertikale funktioniert problemlos. Auch wenn ich einstelle, daß ich immer eine horizontale haben will, wird sie zwar angezeigt, ist aber immer deaktiviert, da sich die Tabelle ständig der auch noch so kleinen Größe anpasst.
Wie kann ich dem Scrollpane sagen, daß es auch horitontale Leisten richtig benutzt?

El Fantastico
2004-02-20, 09:46:43
Hi,

ich glaube das Problem ist vielleicht eher, dass die Tabelle sich auf die Breite verkleinern lässt. So ein ähnliches Problem hatte ich auch mal. Ich habs dann etwas dirty gelöst indem ich von dem Panel (das wars bei mir) geerbt hab und die setSize (?) Methode überschrieben habe um umgewollte resizes zu verhindern.

Das Setzen von preferredSize hat bei mir merkwürdigerweise nichts gebracht :???:

HellHorse
2004-02-20, 10:00:56
Stimme El Fantastico zu.
Hast du schon mal setMinWidth(int) (http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/TableColumn.html#setMinWidth(int)) probiert?

Gast
2004-02-20, 12:32:07
setMinWidth(int) hab ich schon ausprobiert. Dann haben die Spalten zwar eine Mindesgröße aber Scrollen kann ich immer noch nicht, auch wenn ich explizit angeben, daß die horizontale Leiste immer aktiv ist. So verschwinden die Spalten im Swing-Nirvana.

Wie soll ich denn die setSize()-Methode des JTable überschreiben?
Einfach nichts reinschreiben?. Dann hat die Tabelle bei mir immer die Minimalgröße, so daß garnix mehr zu erkennen ist.

El Fantastico
2004-02-20, 12:38:44
Also bei mir war damals die Anforderung, dass das Panel quadratisch bleiben musste. Habs dann so gemacht (nicht hauen *g*):

public void setSize(Dimension d) {
if (d.width == d.height) {
super.setSize(d);
}
}


Vielleicht kannst Du bei Dir eine ähnliche Bedingung unterbringen, die prüft, ob eine bestimmt Minimalgrösse unterschritten würde?

HellHorse
2004-02-20, 14:45:22
ev reicht ja schon
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
ich habe mal das versucht:

public class MinimumTable extends JTable {
public MinimumTable(TableModel dm) {
super(dm);
}

public void setSize(int width, int height) {
int minWidth = 0;
for (int i = 0; i < this.getColumnCount(); ++i) {
TableColumn nextColumn = this.getColumnModel().getColumn(i);
minWidth += Math.max(nextColumn.getMinWidth(), nextColumn.getWidth());
}
super.setSize(minWidth, height);
}
}

haut aber nicht hin :(

Gast
2004-02-20, 16:27:11
so weit war ich auch schon :)

Scheint wohl nicht so ganz einfach zu sein.