简体   繁体   English

箭头键,TextField集中在Java中?

[英]Arrow Keys, TextField focus in java?

I have a JPanel with 16 JTextfield (4x4) in it, I draw them using for loop. 我有一个带有16个JTextfield (4x4)的JPanel ,我使用for循环绘制它们。

Now, I want to use my arrow keys to move focus from this jtextfield to the other. 现在,我想使用箭头键将焦点从该jtextfield移到另一个。

How can I do that? 我怎样才能做到这一点?

Code (edit extracted from OP's answer) 代码 (从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;
        }
    }   
}

You could create an array of all of your JTextFields and a KeyAdapter to your panel. 您可以创建所有JTextField的数组和面板的KeyAdapter。 If the entered key is the right key, set the focus to the next JTextField in the array. 如果输入的键是右键,则将焦点设置到数组中的下一个JTextField。 If it's the left key, set the focus to the previous JTextField. 如果是左键,则将焦点设置到上一个JTextField。 Consider the difference between preincrement and postincrement in this. 考虑一下在此之前增加和之后增加之间的区别。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM