下面是我的自定義邏輯,用于按 Tab 鍵轉(zhuǎn)到下一個(gè)可編輯單元格。從特定列按 Tab 鍵顯示時(shí)自動(dòng)添加行。什么工作正常:當(dāng)添加新行時(shí),焦點(diǎn)會(huì)自動(dòng)放在下一列的第一行上,以便當(dāng)我開始鍵入時(shí),它從下一行的第一列鍵入。我需要什么 :突出顯示焦點(diǎn)中的單元格,以便用戶知道焦點(diǎn)位于下一行的第一列。目前,盡管它正確地鍵入到單元格中,但我們并不明顯知道它指向該單元格。注意:我已經(jīng)這樣做了,但仍然不起作用。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);
添加回答
舉報(bào)
0/150
提交
取消