клавиша табуляции не может перенести фокус на JTable

1

Поэтому у меня есть 2 компонента в моем фрейме, таблице и текстовом поле. но когда таблица имеет фокус, и я нажимаю клавишу табуляции, фокус не переходит в текстовое поле. Почему это происходит?

public static void main(String[] args) {
     SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            JFrame frame = new JFrame();
            String[][] data = { { "Data" } };
            String[] cols = { "COlo" };
            JTable table = new JTable(data, cols);
            table.addFocusListener(new FocusListener() {

                public void focusLost(FocusEvent arg0) {
                    System.out.println("focus lost");
                }

                public void focusGained(FocusEvent arg0) {
                    System.out.println("gained");
                }
            });
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(table, BorderLayout.NORTH);
            frame.add(new JTextField(), BorderLayout.SOUTH);
            frame.setVisible(true);
            table.requestFocus();

        }
    });
}
  • 1
    Это старая статья, но она может дать объяснение тому, что вы видите. java.net/node/651087 . Кроме того, попробуйте поискать в StackOverflow «JTable focustraversalpolicy».
Теги:
swing
focus
jtable

1 ответ

1
Лучший ответ

Почему это происходит?

Поскольку клавиша Tab используется для навигации между ячейками в JTable, подсистема фокусировки использует Control - Tab для перехода от JTable. Для примера см. " Настройка обхода траектории". Вы можете изменить поведение по умолчанию, как показано здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню