2017-07-23 4 views
0

Der Versuch, eine JTable innerhalb einer JScrollPane zu haben. Aber das Problem ist, jedes Mal, wenn ich der Tabelle eine weitere Zeile hinzufüge, vergrößert sich der JFrame in der Höhe (Abbildung unten als Referenz). Ich will nicht, dass es das tut. Offensichtlich möchte ich, da ich in einem Bildlauffenster bin, Zeilen in der Tabelle hinzufügen, möchte ich, dass eine Bildlaufleiste tatsächlich angezeigt wird und verwendet wird, um nach unten zu blättern, um die niedrigeren Werte in der Tabelle zu sehen.Problem mit JTable in JScrollPane

Screenshot: http://i.imgur.com/dUqQW7N.jpg

Code:

String[] columns = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"}; 

Object[][] data = { 
     {"Kathy", "Smith", "Snowboarding", 5, false}, 
     {"John", "Doe", "Rowing", 3, true}, 
     {"Sue", "Black", "Knitting", 2, false}, 
     {"Jane", "White", "Speed reading", 20, true}, 
     {"Joe", "Brown", "Pool", 10, false} 
}; 

searchBox = new JTextField(); 
searchButton = new JButton(); 
rentCarButton = new JButton(); 
rentedCarsButton = new JButton(); 
table = new JTable(data, columns); 
table.setPreferredScrollableViewportSize(table.getPreferredSize()); 
scrollPane = new JScrollPane(table); 

Jede Hilfe geschätzt sehr würde.

+0

Sie fügen der Tabelle nie etwas hinzu, nachdem sie in dem von Ihnen geposteten Code erstellt wurde. Veröffentlichen Sie ein vollständiges, minimales Beispiel, das das Problem reproduziert. –

+0

Das ist nicht der Punkt. Der Punkt ist nicht, dass ich dynamische Methoden verwenden werde, um Zeilen zu der Tabelle hinzuzufügen, es ist, dass der Bildlaufbereich und die Tabelle nicht so funktionieren, wie ich sie haben möchte. Ich habe die gleiche Lösung getestet, aber dem mehrdimensionalen Array "data" -Objekt weitere Zeilen hinzugefügt, und ich sah, dass der JFrame ausgedehnt wurde. Ich möchte eine Lösung, die die Bildlaufleiste aus dem Bildlaufbereich tatsächlich verwendet. – Jacob

+1

Verwenden Sie dann table.getPreferredSize() nicht als bevorzugte Größe für scrollbares Ansichtsfenster. Die bevorzugte Größe der Tabelle ist die Größe, mit der alle Zeilen angezeigt werden können. Verwenden Sie die gewünschte feste Bemaßung. –

Antwort

0

Welp die Antwort direkt vor mir war, Ich habe gerade die Codezeile

table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

zu

table.setPreferredScrollableViewportSize(new Dimension(400, 100)); 

ich dumm fühlen.

Verwandte Themen