下面是我的自定义逻辑,用于按 Tab 键转到下一个可编辑单元格。从特定列按 Tab 键显示时自动添加行。什么工作正常:当添加新行时,焦点会自动放在下一列的第一行上,以便当我开始键入时,它从下一行的第一列键入。我需要什么 :突出显示焦点中的单元格,以便用户知道焦点位于下一行的第一列。目前,尽管它正确地键入到单元格中,但我们并不明显知道它指向该单元格。注意:我已经这样做了,但仍然不起作用。table.cellSelectionEnabled(true);InputMap im = itemTable.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);final Action oldTabAction = itemTable.getActionMap().get(im.get(tab));Action tabAction = new AbstractAction(){ public void actionPerformed(ActionEvent e) { oldTabAction.actionPerformed( e ); JTable table = (JTable)e.getSource(); int rowCount = table.getRowCount(); int columnCount = table.getColumnCount(); int row = table.getSelectedRow(); int column = table.getSelectedColumn(); FLItemRuleInfo itemRuleInfo = itemTableModel.getItemRuleInfoList().get(row); while (! itemTableModel.isCellEditable(row, column) ) { if((itemRuleInfo.getItem()==null || itemRuleInfo.getItem().getItemId()==null || itemRuleInfo.getItem().getItemId().isEmpty())){ column=1; break; } column += 1; if (column == columnCount) { column = 1; row +=1; } /* if (row == rowCount) { row = 0; }*/ if (row == table.getSelectedRow() && column == table.getSelectedColumn()) { break; } } table.changeSelection(row, column, false, false); if(column==8 && (row == rowCount-1) && itemRuleInfo.getItem()!=null){ itemTableModel.addRow(new FLItemRuleInfo()); } }};itemTable.getActionMap().put(im.get(tab), tabAction);
添加回答
举报
0/150
提交
取消