如何使JTable的宽度> =封闭的滚动窗格的宽度?

时间:2013-07-10 05:52:17

标签: java swing jtable jscrollpane

我想让表格宽度至少适合封闭滚动窗格的宽度,如果它越来越大,则使用水平滚动条。

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());

有任何想法可以实现吗?

1 个答案:

答案 0 :(得分:3)

  

我尝试将最小尺寸设置如下,但它不起作用:

     

table.setMinimalSize(scrollPane.getSize());

  • JTableJScrollPane无法返回合理的MinMaxPreferredSize

  • 您可以通过使用JScrollPanes(在行数方面小心地适应(在应用程序启动时)table.setPreferredScrollableViewportSize(table.getPreferredSize());维度到JTable,否则您必须计算Dimension而不是JTable.getP。 ..)对于JFrame.pack(),运行时必须由revalidate()repaint()验证容器嵌套JScrollPane,不要那样做

  • 不要重新发明轮子,使用Fixed Column Table Table Column Adjuster来自@camickr,哪一个不清楚你的描述,取决于你...

  

JTable的宽度> =封闭的滚动窗格的宽度?

  • 无法逆转这个想法