Hallo zusammen,
im Grunde habe ich 2 Probleme mit einer JTable und einem umgebenden JScrollPane.
Problem 1 - Höhenproblem: die JTable wird im Regelfall relativ wenige Zeilen haben. Dennoch sorgt das Scrollpane dafür, dass enorm viel MEhr-Platz geblockt wird. Mit der preferedSize könnte ich sicher etwas machen - nur weiß ich nicht, wie breit und hoch das Fenster ist. (soll erst bei Überschreiten der Fenstergröße mit Scrollbar sein).
Das ganze ist auch in einer etwas komplexeren Applikation verbaut, weshalb es sich sogar in dem Fall nur um ein panel handelt - das die max. Größe eigentlich automatisch bestimmen sollte...
Siehe Bild: http://666kb.com/i/b9zuy9mo8daqc169e.png
Problem 2 - die Breite: Ich möchte das autoResizen eigentlich nicht deaktivieren - es soll solange genutzt werden, wie noch alle Spalteninhalte angezeigt werden können. DANACH soll dann aber die Scrollbar anspringen und nicht weiter verkleinert werden. Problem ist: entweder kommt die horizontale Scrollbar gar nicht, oder die Spalten sind immer zu breit...
Einfaches Testprogramm:
PS: die Suche habe ich benutzt. Zumindest für die Breite soll man wohl das resize-Verhalten deaktiveren. Genau das möchte ich ja nicht. :-(
im Grunde habe ich 2 Probleme mit einer JTable und einem umgebenden JScrollPane.
Problem 1 - Höhenproblem: die JTable wird im Regelfall relativ wenige Zeilen haben. Dennoch sorgt das Scrollpane dafür, dass enorm viel MEhr-Platz geblockt wird. Mit der preferedSize könnte ich sicher etwas machen - nur weiß ich nicht, wie breit und hoch das Fenster ist. (soll erst bei Überschreiten der Fenstergröße mit Scrollbar sein).
Das ganze ist auch in einer etwas komplexeren Applikation verbaut, weshalb es sich sogar in dem Fall nur um ein panel handelt - das die max. Größe eigentlich automatisch bestimmen sollte...
Siehe Bild: http://666kb.com/i/b9zuy9mo8daqc169e.png
Problem 2 - die Breite: Ich möchte das autoResizen eigentlich nicht deaktivieren - es soll solange genutzt werden, wie noch alle Spalteninhalte angezeigt werden können. DANACH soll dann aber die Scrollbar anspringen und nicht weiter verkleinert werden. Problem ist: entweder kommt die horizontale Scrollbar gar nicht, oder die Spalten sind immer zu breit...
Einfaches Testprogramm:
Java:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class TestFrame extends JFrame{
public TestFrame(){
super("test");
setLayout(new BorderLayout(10,10));
String[][] data = {{"3","1","0","0","0","0","0","12","546"},
{"test","test","1","2","3","4","5","",""},
{"0","4","5","2","3","7","1","30","90"},
{"1","10","2","4","2","7","1","14","100"},
{"0","6","0","2","2","7","1","12","15"},
{ "test","","2","4","5","7","1","14","157"}};
String[] cols = {"1","2","3","4","5","6","7","8","9"};
JTable table = new JTable(data, cols);
table.setShowGrid(false);
JScrollPane pane = new JScrollPane();
pane.setViewportView(table);
pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add(pane,BorderLayout.CENTER);
add(new JLabel("test"), BorderLayout.SOUTH);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
TestFrame t= new TestFrame();
t.pack();
t.setVisible(true);
}
}