我在JTable
中有一个JScrollPane
。如果屏幕在JTable
中显示一行的一半,则在单击JTable
时,JScrollPane
会自动滚动以显示整个行。
如何停止该行为,以使单击不会滚动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));