JTable:是否可以禁用“滚动到列”?

时间:2011-12-22 06:43:12

标签: java swing jtable

我有一个JTable,其模型大约有20列。这比单个屏幕更适合,因此滚动条可以让用户向上/向下和向右/向左滚动。

现在,如果用户一直向右滚动并点击一行,那么该行就会被选中。但是,如果用户然后使用滚动条一直向左滚动,然后按向下箭头键,JTable会自动再次向右滚动(并选择下一行)。就像JTable记住用户第一次点击的列一样,当使用向下箭头键时,JTable只接受该列并向下移动一行并向后滚动到该列。

有没有办法禁用此行为,以便用户在没有JTable进行所有“魔术”滚动的情况下保持在所选视图中?

3 个答案:

答案 0 :(得分:3)

滚动JTable isent连接到单元格选择。

单击一个单元格将使Jtable将其曲线放到该单元格上。这意味着将来所有导航都将来自最后点击的位置。 Nomatter你滚动最后一个位置的数量将是键导航的起点。

但事实上,你描述的行为只是关于任何gui的标准。使用Intellij,Excel,Word,Editplus,...如果您使用箭头键进行导航,请始终向后滚动到最后点击的位置。

但GUi讨论回到你的问题

我认为你可以使用

setAutoscrolls(false);

在您的jtable上

答案 1 :(得分:1)

您可以尝试setColumnSelectionAllowed(false),这样用户就无法在第一时间选择该列。

答案 2 :(得分:0)

我通过JTable替代来防止这种行为。

请注意,我的表并不关心单元格的选择,只绘制行选择(无单元格选择边框)。

  @Override
  public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend)
  {
    // essentially disabling cell selection, selected column index will always be 0
    columnIndex = 0;
    super.changeSelection(rowIndex, columnIndex, toggle, extend);
  }