gui*_*eak 10 java swing jtable
我必须实现一个JTable,其中必须选择一行(总是).不允许空选择.我在初始化期间选择了第一行:
table.setRowSelectionInterval(0, 0);
Run Code Online (Sandbox Code Playgroud)
另外,我正在使用
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
Run Code Online (Sandbox Code Playgroud)
但是用户仍然可以使用CLick + Ctrl取消选择一行.
确保在表中始终选择一个(exaclty)行的最简单方法是什么?
小智 20
如果您创建了JTable实例,只需使用:
jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
Run Code Online (Sandbox Code Playgroud)
Mad*_*mer 15
现在,您可以添加MouseListeners,SelectionListeners,KeyListeners和键绑定来尝试解决这个问题.或者,你可以找到问题的核心.
该ListSelectionModel负责管理该选择的详细信息.
您可以简单地ListSelectionModel为行选择提供自己的选择
public class ForcedListSelectionModel extends DefaultListSelectionModel {
public ForcedListSelectionModel () {
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
@Override
public void clearSelection() {
}
@Override
public void removeSelectionInterval(int index0, int index1) {
}
}
Run Code Online (Sandbox Code Playgroud)
只需将它设置到您的桌子上......
table.setSelectionModel(new ForcedListSelectionModel());
Run Code Online (Sandbox Code Playgroud)
确保表中始终选择一行(精确)的最简单方法是什么?
有三种(基本上)选择类型
JTable.setRowSelectionAllowed(boolean);
JTable.setColumnSelectionAllowed(boolean);
JTable.setCellSelectionAllowed(boolean);
Run Code Online (Sandbox Code Playgroud)
编辑
也适合我
int row = table.getSelectedRow();
if ((row > -1)) {
table.setRowSelectionInterval(row, row);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23240 次 |
| 最近记录: |