[英]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.