簡體   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