【发布时间】:2017-12-28 23:47:11
【问题描述】:
试图在 JScrollPane 中包含一个 JTable。但问题是,每次我在表中添加另一行时,JFrame 的大小都会随着高度的增加而增加(下面的截图供参考)。我不希望它这样做。显然,由于它位于滚动窗格中,因此如果我继续向表格中添加行,我希望实际显示一个滚动条并用于向下滚动以查看表格中较低的值。
截图:http://i.imgur.com/dUqQW7N.jpg
代码:
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);
任何帮助将不胜感激。
【问题讨论】:
-
在您发布的代码中创建表格后,您永远不会向表格添加任何内容。发布一个完整的、最小的示例来重现问题。
-
这不是重点。关键不是我要使用动态方法向表中添加行,而是滚动窗格和表没有按照我想要的方式执行。我已经测试了同样的解决方案,但是在“数据”对象多维数组中添加了更多行,我看到 JFrame 被拉伸了。我想要一个实际使用滚动窗格中的滚动条的解决方案。
-
那么不要使用 table.getPreferredSize() 作为首选的可滚动视口大小。表的首选大小是允许它显示所有行的大小。使用您想要的固定尺寸。
-
更多here.
标签: java swing jtable jscrollpane