繁体   English   中英

Java,NetBeans IDE和JTextField

[英]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中“文本”属性中设置的字符串,它将永远不会改变。

我是否缺少有关Java的重要知识? 有人可以指出我正确的方向吗?

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

使用JTextField,如果调用getText(),则在索引超出范围或Document为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实例,并且未按应有的方式运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM