无法输入JTextField

时间:2012-03-19 07:52:08

标签: java swing jtextfield

我在日本RHEL5机器上遇到JTextField的一个小问题,用户无法在其中键入任何内容,我使用以下语法创建它

Container c = getContentPane();
c.setLayout(new GridBagLayout());

GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 10, 0), 0, 0);

c.setBackground(Color.WHITE);
JTextField txtName = new JTextField(10);
txtName.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override
        public void keyReleased(KeyEvent e) {
            disableBtn();
        }

        @Override
        public void keyPressed(KeyEvent e) {
            // TODO Auto-generated method stub

        }
    });
    gbc.gridx = 1;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.anchor = GridBagConstraints.NORTHWEST;
    c.add(txtName, gbc);
如果用户没有在上面的文本字段中输入任何内容,

disableBtn()方法会禁用对话框上的按钮。 并使用add方法将其添加到JPanel,我正在使用GridBagLayout。这个问题发生在一些JTextField上,而其他工作正常。此外,在我的开发机器上一切正常,但是当我将代码传输到日本RHEL5机器时,存在问题。

我遇到了与JPasswordField类似的问题,并使用以下内容解决了这个问题,

password.setEchoChar('*');
password.enableInputMethods(true);

有问题的机器正在输出“java -version”命令,

# java -version

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

我觉得很好。我在这里遗失了什么吗?

1 个答案:

答案 0 :(得分:3)

1)你的代码没有显示什么是c.add(txtName, gbc);,可能有最重要的原因,我认为你忽略了@Andrew Thompson的请求,这里发布的代码不是SSCCE,< / p>

2)不要使用Keylistener,因为JTextComponent必须setFocusable(),我错过了此代码行,因为Swing JComponents使用KeyBindings < / p>

3)聆听JTextComponents仅使用DocumentListener