Клавиши со стрелками, TextField фокус в Java?

1

У меня есть JPanel с 16 JTextfield (4x4), я рисую их, используя цикл.

Теперь я хочу использовать клавиши со стрелками для перемещения фокуса с этого jtextfield на другой.

Как я могу это сделать?

Код (редактирование извлечено из ответа OP)

private JTextField[] characters;

public void drawWords() {
pnlWords.removeAll();
pnlWords.setLayout(new GridLayout(4, 4));
characters = new JTextField[4 * 4];

for (int i = 0; i < 4 * 4; i++) {
    characters[i] = new JTextField();
    characters[i].setHorizontalAlignment(JLabel.CENTER);
    characters[i].setBackground(Color.LIGHT_GRAY);
    characters[i].setFont(font);
    characters[i].addKeyListener(new java.awt.event.KeyAdapter() {
        public void keyTyped(java.awt.event.KeyEvent evt) {
            charactersKeyTyped(evt);
        }
    });
    pnlWords.add(characters[i]);
}
}


public void charactersKeyTyped(java.awt.event.KeyEvent evt) {
int key = evt.getKeyCode();        
    for (int i = 0; i < 4 * 4; i++) {
        switch (key) {
            case KeyEvent.VK_LEFT:
                characters[i - 1].requestFocus();
                break;
            case KeyEvent.VK_RIGHT:
                characters[i + 1].requestFocus();
                break;
            case KeyEvent.VK_UP:
                characters[i - 4].requestFocus();
                break;
            case KeyEvent.VK_DOWN:
                characters[i + 4].requestFocus();
                break;
        }
    }   
}
  • 2
    Попробуйте добавить KeyListener
  • 0
    Это не получится
Теги:
jtextfield
arrow-keys

1 ответ

0

Вы можете создать массив всех ваших JTextFields и KeyAdapter для вашей панели. Если введенный ключ является правой клавишей, установите фокус на следующий JTextField в массиве. Если это левая клавиша, установите фокус на предыдущий JTextField. Рассмотрите разницу между прединкрестностью и постинкрементом в этом.

  • 0
    Не могли бы вы дать мне пример, пожалуйста, я сделал это таким образом, но я где-то ошибаюсь, так что это не работает. Спасибо
  • 0
    Что у тебя так далеко? Опубликуйте ссылку на ссылку или ссылку на GitHub. Предоставление вам кода не поможет вам, но улучшит вашу. Конечно, если вы не хотите, чтобы я это делал, просто скажите мне.
Показать ещё 2 комментария

Ещё вопросы

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