1
我在JScrollPane
中有JTable
。如果屏幕显示JTable
中的一行的一半,则单击JTable
时,JScrollPane
会自动滚动以显示整行。JScrollPane中的JTable在不需要时强制滚动
如何停止该行为,使点击不会滚动JScrollPane
。
谢谢!
我在JScrollPane
中有JTable
。如果屏幕显示JTable
中的一行的一半,则单击JTable
时,JScrollPane
会自动滚动以显示整行。JScrollPane中的JTable在不需要时强制滚动
如何停止该行为,使点击不会滚动JScrollPane
。
谢谢!
该行为通过从表的UI委托中调用scrollRectToVisible()
来实施,通常从BasicTableUI
派生。您可以使用setPreferredScrollableViewportSize()
来填充Container
的整数高度为rowHeight
的整数高度,如下图所示以及在example中所示。
private static final int N_ROWS = 8;
private JTable table = new JTable();
...
Dimension d = new Dimension(
table.getPreferredScrollableViewportSize().width,
N_ROWS * table.getRowHeight());
table.setPreferredScrollableViewportSize(d);
add(new JScrollPane(table));
你知道我想硬编码的大小;-) SetPrefScrollable不是来自任何其他setXXSize的很大的不同。相反,实现表的getPreferredScrollableViewportSize返回合理的f.i.在像可视行/列这样的可配置属性方面(就像JXTable所做的那样:-) – kleopatra
@kleopatra:完全正确,正如讨论的[here](http://stackoverflow.com/q/7229226/230513)以及相关的[示例](http://stackoverflow.com/a/11132778/230513)。 – trashgod