【问题标题】:Unable to type in JTextField无法输入 JTextField
【发布时间】:2012-03-19 07:52:07
【问题描述】:

我在日本 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 会出现此问题,而其他 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)

我认为这很好。这里有什么我遗漏的吗?

【问题讨论】:

  • 您可能想要粘贴与不可编辑的JTextFields 相关的代码的 sn-ps。
  • 如需尽快获得更好的帮助,请发帖 SSCCE。这应该可以在 “我正在使用以下语法创建它 JTextField field = new JtextField();” 不,你不是!该代码无法编译(由于错误的情况)。请不要浪费人们试图帮助您的时间,通过发布“类似于”使用的代码。 复制/粘贴无论是SSCCE还是代码sn-ps。
  • 是的,我输入了它,但除此之外别无其他。反正我已经编辑过了。

标签: java swing jtextfield


【解决方案1】:

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

2)不要使用Keylistener,因为你的JTextComponent必须有setFocusable(),我错过了这个代码行,对于Swing JComponents使用KeyBindings

3) 用于收听JTextComponents 仅使用DocumentListener

【讨论】:

  • 添加了一些我认为可能没有必要的代码。你确定这是 KeyListner 的问题吗,因为它只有在键入密钥时才会出现,在我的情况下,根本没有键入密钥,而且在我无法访问的日本机器上也是如此。您能否详细说明 KeyListner over DocumentListener 的问题。
  • 对你的想法是对的,这段代码什么都没说,ContentPane来自JFrame,JDialog,JWindow,你真的想在这个论坛上提供帮助吗,为什么我们必须寻求你的帮助,你的代码张贴在这里谈论 10pct 周围存在的潜在问题...
  • 请仔细看看我的问题,它在我发布的代码之后就有关于Dialog的声明。如果你想帮助,那就帮助而不是批评。 \m/
  • JDialog, Dialog or dialog ???, If you want to help then help rather than criticizing. \m/, 有很多页面您可以要求付款支持,我们只有没有 VPN 或 RDP 到您的计算机的志愿者,您问过寻求帮助,然后您接受我们的规则,否则答案如您所见,正确回答您的问题我错过了我们在 cmets 中提到的所有内容
  • 1) 删除 KeyListener,2) 是否有另一个顶级容器,3) 有 JDialog 自己的父级,4) 是在 Initial Thread 或从 Swing Listener 中的一些创建的对话框,5) 全部JDialog 的部件/JComponents 在两个 Native OS 上都可见
猜你喜欢
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
相关资源
最近更新 更多