0

如何更改或隐藏该 JTextField 以不向用户显示并仍然获得用户键入的键?我尝试使用“KeyCodeT.setVisible(false);”,但它没有用。

这就是我所说的:http: //oi46.tinypic.com/35hobbn.jpg

完整代码在这里: http: //pastebin.com/8t3cTLKX

JTextField KeyCodeT = new JTextField("Key Code:");

public KeyProgram() {
    KeyCodeT.addKeyListener(this);
    KeyCodeT.setEditable(false);
    add(KeyCodeT);
    setSize(300, 300);      
}

public void keyPressed(KeyEvent e) {
    System.out.println("Key Pressed!!!");

    if (e.getKeyCode() == 27) {
        JOptionPane.showMessageDialog(null, "Good  Bye");
        System.exit(0);
    }

}

public void keyReleased(KeyEvent e) {
    System.out.println("Key Released!!!");
    KeyCodeT.setText("Key Code:" + e.getKeyCode());

}

public void keyTyped(KeyEvent e) {
}

public static void main(String[] args) {
   KeyProgram key = new KeyProgram();
   key.setVisible(true);
}
4

2 回答 2

2
if (e.getKeyCode() == 27)

不要使用幻数。阅读您的代码的人不知道那是什么。而是使用:

KeyEvent.VK_ESCAPE

但是,您甚至不应该为此使用 KeyListener。相反,您应该使用Key Bindings

于 2013-04-19T14:39:46.847 回答
1

您可以尝试以下方法:

JTextField textField= new JTextField();
textField.setBackground(UIManager.getColor("Panel.background")); // set the text box background color to color of component behind
textField.setBorder(null); // remove the text box border

如下所示:

透明/不可见文本框示例

注意:这可能不是满足此要求的最佳方法,但这确实有效。

于 2013-04-19T12:25:55.697 回答