Swing JTable:选择选项卡上的下一个单元格,但第一个焦点选择相同的单元格,而不是下一个
我想:Swing JTable:选择选项卡上的下一个单元格,但第一个焦点选择相同的单元格,而不是下一个,swing,focus,jtable,edit,next,Swing,Focus,Jtable,Edit,Next,我想: 使用按钮将行添加到JTable 创建该行后,将其设置为焦点并开始编辑第一列 当用户按Tab键时,选择下一列 对于“添加”按钮,我执行以下操作: add_button.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { int row = table_m
- 使用按钮将行添加到JTable
- 创建该行后,将其设置为焦点并开始编辑第一列
- 当用户按Tab键时,选择下一列
add_button.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
int row = table_model.addRow();
table.setRowSelectionInterval(row, row);
table.scrollRectToVisible(table.getCellRect(row, 0, true));
table.editCellAt(row, 0);
table.transferFocus();
did_add = true;
}
});
这确实会导致表格单元格聚焦并开始编辑。为确保按Tab键选择下一个单元格,我有以下选项:
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0, false), "selectNextColumnCell");
我的问题是:
- 如果我以前做过任何单元格选择,那么这将非常有效。我可以编辑第一列,然后按Tab键,这样就可以选择下一列
- 但是,如果此表是新创建的,或者该表之外的某个小部件以前具有焦点,并且我单击我的添加按钮,则会发生以下情况:
- 第一列已正确选择且可编辑
- 当我按Tab键时,通常会聚焦同一单元格
- 我必须再次按Tab键才能转到下一列
- 有时,第一个选项卡实际上会转到单元格0,0
知道如何解决这个问题吗?因为列选择没有通过设置表的行选择而改变:启动时,它是未选择的,然后导航到下一列(也称为:将已编辑的列禁用),将其设置为第一列。要解决此问题,请设置列选择和行选择
table.setRowSelectionInterval(row, row);
table.setColumnSelectionInterval(0, 0);
这是因为列选择不会通过设置表的行选择来更改:启动时未选中该列,然后导航到下一列(也称为:禁用已编辑的列)将其设置为第一列。要解决此问题,请设置列选择和行选择
table.setRowSelectionInterval(row, row);
table.setColumnSelectionInterval(0, 0);
谢谢这解决了问题!谢谢这解决了问题!