繁体   English   中英

箭头键,TextField集中在Java中?

[英]Arrow Keys, TextField focus in java?

我有一个带有16个JTextfield (4x4)的JPanel ,我使用for循环绘制它们。

现在,我想使用箭头键将焦点从该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;
        }
    }   
}

您可以创建所有JTextField的数组和面板的KeyAdapter。 如果输入的键是右键,则将焦点设置到数组中的下一个JTextField。 如果是左键,则将焦点设置到上一个JTextField。 考虑一下在此之前增加和之后增加之间的区别。

暂无
暂无

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

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