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