我想让表格宽度至少适合封闭滚动窗格的宽度,如果它越来越大,则使用水平滚动条。
JTable
的自动调整大小模式都不适合我的需要:AUTO_RESIZE_OFF
允许将表调整为大于滚动窗格的宽度,但不能限制表的最小宽度;其他模式不允许表格宽度大于滚动窗格的宽度。
我尝试将最小尺寸设置如下,但它不起作用:
JTable table = new JTable(myModel);
JScrollPane scrollPane = new JScrollPane(table);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// After the table is displayed.
table.setMinimalSize(scrollPane.getSize());
有任何想法可以实现吗?
答案 0 :(得分:3)
我尝试将最小尺寸设置如下,但它不起作用:
table.setMinimalSize(scrollPane.getSize());
JTable
和JScrollPane
无法返回合理的Min
,Max
和PreferredSize
您可以通过使用JScrollPanes
(在行数方面小心地适应(在应用程序启动时)table.setPreferredScrollableViewportSize(table.getPreferredSize());
维度到JTable,否则您必须计算Dimension而不是JTable.getP。 ..)对于JFrame.pack()
,运行时必须由revalidate()
和repaint()
验证容器嵌套JScrollPane
,不要那样做
不要重新发明轮子,使用Fixed Column Table Table Column Adjuster来自@camickr,哪一个不清楚你的描述,取决于你...
JTable的宽度> =封闭的滚动窗格的宽度?