我想:
对于Add按钮,我这样做:
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");
这是我的问题:
所以,似乎虽然细胞被聚焦并被编辑,但是桌子的焦点有些不对,因为下一个细胞是不正确的。
我尝试了一些涉及将焦点设置到表格的解决方法,但似乎没有工作(requestFocus,requestFocusInWindow,设置表格选择等)。
知道如何解决这个问题吗?
答案 0 :(得分:1)
这是因为通过设置表的行选择来更改列选择 :在启动时它未被选中,然后导航到下一列(也就是:从已编辑的标签中删除)将其设置为第一栏。要解决此问题,请设置列选择以及行选择
table.setRowSelectionInterval(row, row);
table.setColumnSelectionInterval(0, 0);