Java, NetBeans IDE and JTextField



很遗憾,我关于SO的第一个问题是如此愚蠢,但我无法绕过这件事。

经过数小时的"蒸馏",我将问题简化为:

使用Netbeans,我制作了一个JFrame,并在其中放置了一个Jbutton1和一个JTextField(名为sinonimo)。这个想法是使用文本字段来获取用户输入。所以我像这样设置按钮的onClick操作

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
    System.out.println(sinonimo.getText());
}                  

问题是:我可以在文本字段中键入任何内容,getText() 方法将仅返回在 Netbeans 的"text"属性中设置的字符串,它永远不会更改。

我是否错过了关于Java的重要内容? 有人能指出我正确的方向吗?

编辑:在

复制完整代码时,我发现了问题:在框架的构造函数中,initComponents() 被调用了两次,生成了另一个无法从 MouseClicked 事件访问的文本字段副本(我认为)。现在一切似乎都很好,谢谢你们的照明响应!

使用 JTextField,如果调用 getText(),如果索引超出范围或文档为 null,它将返回 null。如果您可以发布更多代码,我可以进一步帮助解决此问题。使用以下代码,这工作得很好。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test {
    public static void main(final String[] args) {
        final JFrame frame = new JFrame();
        final JButton button = new JButton("Print");
        final JTextField field = new JTextField();
        frame.setLayout(new BorderLayout());
        frame.add(button, BorderLayout.NORTH);
        frame.add(field, BorderLayout.SOUTH);
        frame.setVisible(true);
        frame.pack();
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println(field.getText());
            }
        });
    }
}

据我所知,在您发布更多代码之前,要么您打印它的方法未被使用,要么文档返回 null,要么 sinonimo 实例未正确添加并且无法正常运行。

相关内容

  • 没有找到相关文章

最新更新