java - JScrollPane 中的 JTable 在不需要时强制滚动

标签 java swing jtable jscrollpane

我在 JScrollPane 中有一个 JTable。如果屏幕显示 JTable 中的半行,则单击 JTable 时,JScrollPane 会自动滚动以显示整行。

如何停止该行为,以便单击不会滚动 JScrollPane

谢谢!

最佳答案

通过从表的 UI 委托(delegate)(通常派生自 BasicTableUI)调用 scrollRectToVisible() 来强制执行该行为。如果缺少自己的委托(delegate),您可以使用 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));

image

关于java - JScrollPane 中的 JTable 在不需要时强制滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11181911/

相关文章:

java - GridBagLayout - 图表和标签的放置

java - JTextPane 背景颜色

java - 每次在 Java Swing 中单击 JFrame 中的 JButton 时,如何添加一个新的 JPanel 实例

java - JTable Swing 检索数据

java - Tomcat 教程 : Why Did This Install Fail?

java - 如何执行远程 PSSession 并在远程桌面中运行脚本?

java - JAXB 中 HashMap<String,Object> 的自定义编码

java - 将文本区域添加到 FlowLayout 面板 Java Swing

java - 临时隐藏 JTable 中的列

java - 如何仅将表中列的特定值加载到组合框