我在日本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)
我觉得很好。我在这里遗失了什么吗?
答案 0 :(得分:3)
1)你的代码没有显示什么是c.add(txtName, gbc)
;,可能有最重要的原因,我认为你忽略了@Andrew Thompson
的请求,这里发布的代码不是SSCCE,< / p>
2)不要使用Keylistener,因为JTextComponent必须setFocusable()
,我错过了此代码行,因为Swing JComponents
使用KeyBindings < / p>