我有一个JTable,其模型大约有20列。这比单个屏幕更适合,因此滚动条可以让用户向上/向下和向右/向左滚动。
现在,如果用户一直向右滚动并点击一行,那么该行就会被选中。但是,如果用户然后使用滚动条一直向左滚动,然后按向下箭头键,JTable会自动再次向右滚动(并选择下一行)。就像JTable记住用户第一次点击的列一样,当使用向下箭头键时,JTable只接受该列并向下移动一行并向后滚动到该列。
有没有办法禁用此行为,以便用户在没有JTable进行所有“魔术”滚动的情况下保持在所选视图中?
答案 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);
}