Перенос фокуса в JTable - PullRequest
       0

Перенос фокуса в JTable

0 голосов
/ 10 ноября 2010

Я хочу перенести фокус ячейки на конкретную ячейку в JTable, например, когда фокус на ячейке (2,3) и после нажатия клавиши ввода фокус должен быть перенесен на пропущенную ячейку (2,5) одна ячейка (2,4).

Для этого я использую метод changeSelection () класса JTable, но он не работает.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2010

Следует ли переносить фокус только с этой точной ячейки (2,3) или для всех ячеек в столбце 3?В любом случае вот пример, который, кажется, делает то, что вы просите.Хотя имейте в виду, что в этом примере используются следующие предположения для TableCellEditor:

  • TableCellEditor должен возвращать один и тот же компонент при каждом вызове #getTableCellEditorComponent (поскольку мы добавляем в него KeyListener)
  • TableCellEditor может не работать при запросе значения, отсутствующего в таблице (если TableModel пусто во время настройки)

    table.setSurrendersFocusOnKeystroke(true);
    table.getCellEditor(2, 3).getTableCellEditorComponent(table, null, false, 2, 3).addKeyListener(new KeyAdapter()
    {
        @Override
        public void keyPressed(KeyEvent e)
        {
            if (e.getKeyCode() == KeyEvent.VK_ENTER && table.getSelectedRow() == 2 && table.getSelectedColumn() == 3)
            {
                selectCell(2, 5);
                table.editCellAt(2, 5);
                focusEditedCell();
                e.consume();
            }
        }
    
    
       private void selectCell(int row, int col)
       {
            table.setRowSelectionInterval(row, row);
            table.setColumnSelectionInterval(col, col);
       }
    
    
       private void focusEditedCell()
       {
           Component c = table.getEditorComponent();
           if (c != null)
           {
              c.requestFocusInWindow();
           }
       }
    });
    
0 голосов
/ 10 ноября 2010

Возможно, вы сможете найти ответ в том месте, где перемещение курсора выполняется реализацией пользовательского интерфейса по умолчанию.jdk1.6.0_10 \ src \ javax \ swing \ plaf \ basic \ BasicTableUI.java Я предполагаю, что это индекс выбора отведений, который вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...