Java JTable; Tabelle begrenzen?
Mein Problem ist das die Tabelle zu weit nach unten geht.
table.setSize(); habe ich schon versucht, funktioniert aber nicht.
Hier der Code:
JPanel profilname_panel = new JPanel();
String[][] data = {
{ "test", ""},
{ "", ""},
{ "", ""},
{ "", ""},
{ "", ""},
{ "", ""},
};
String[] rows = { "Name", "Picture"};
JTable table = new JTable(data, rows);
table.setDefaultEditor(Object.class, null);
table.setCellSelectionEnabled(false);
table.setFocusable(false);
table.setAutoscrolls(false);
table.setRowHeight(table.getRowHeight() + 60);
profilname_panel.setLocation(20,20);
profilname_panel.setSize(550,180);
profilname_panel.add(new JScrollPane(table));
profilname_speichern.add(profilname_panel);
profilname_speichern.setVisible(true);
Das sieht dann so aus. Ich möchte aber das, die Tabelle nur so groß ist und man nach unten scrollen kann. Weil wenn ich jetzt das JPanel größer mache, dann geht es richtig. Ist nur nicht das was ich möchte.
Eigentlich soll es so wie auf den ersten Bild aussehen, mit den Unterschied das die Tabelle, diese größe hat und man dadurch runterscrollen kann.
Wie kann man die größe der Tabelle ändern?
1 Antwort
Vom Fragesteller als hilfreich ausgezeichnet
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, Java, Informatik
Passe die Größe des ScrollPane an.
scrollPane.setPreferredSize(new Dimension(550, rowHeight * 2));
Da du wohl zwei Zeilen der Tabelle anzeigen lassen möchtest, multipliziere ich an der Stelle auch mit Zwei.
Dazu ein komplettes Beispiel:
import java.awt.*;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
var frame = new JFrame("JTable example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
var tableData = new String[][] {
{ "test", "" },
{ "", "" },
{ "", "" },
{ "", "" },
{ "", "" },
{ "", "" },
};
var table = new JTable(tableData, new String[] { "Name", "Picture" });
table.setDefaultEditor(Object.class, null);
table.setCellSelectionEnabled(false);
table.setFocusable(false);
table.setAutoscrolls(false);
int rowHeight = table.getRowHeight() + 60;
table.setRowHeight(rowHeight);
var scrollPane = new JScrollPane(table);
scrollPane.setPreferredSize(new Dimension(550, rowHeight * 2));
var panel = new JPanel();
panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
panel.add(scrollPane);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)