【发布时间】:2015-07-02 10:50:33
【问题描述】:
当我制作 JTable 时;我有列和单行,然后在下面我有大约 20 行的空间,如果我增加窗口大小会更多。我不能少,好像我缩小了窗口大小我只是得到一个垂直滚动条。
我想做的是让 JTable 的大小只到最后一行。
我是这样想的:
newTable.setMaximumSize(new Dimension(Integer.MAX_VALUE, (newTable.getRowCount() + 1) * newTable.getRowHeight()));
但这绝对没有任何作用。改用 setPreferred size 会使白色背景变大一排,但实际表格的大小仍然相同。 http://i.imgur.com/ClpD1Y3.png
我还在 JTable 所在的滚动窗格上尝试了相同的操作,设置最大/最小尺寸没有任何作用,设置首选尺寸允许我通过调整窗口大小来缩小表格,所以我猜我也许可以使用这个和布局来做我想做的事?但是在尝试为滚动窗格提供布局时,我得到了类转换异常。所以我不确定该怎么做。
【问题讨论】:
-
您只想显示一行?
-
@MadProgrammer 我想显示尽可能多的行,如果我只有一个,那么表格应该是只显示一行所需的大小
-
这不是
JTable或JScrollPane的工作原理 -
@MadProgrammer 我设法通过将 JTable 容器的 prefSize 设置为 0(和相同的高度)而不是最大整数来做到这一点。然后将 maxSize 设置为最大整数和相同的高度。
-
JScrollPane的首选大小由视图组件的preferredSize定义(如果它没有实现Scrollable或getPreferredViewportSize如果它实现了)