我在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));

07-25 22:14
查看更多