0

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()が2回呼び出され、MouseClickedイベントからアクセスできないテキストフィールドの別のコピーが生成されました(私は思います)。これですべてがうまく機能しているようです。照明の応答に感謝します。

4

1 に答える 1

1

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 インスタンスが正しく追加されておらず、正常に機能していないことです。

于 2013-01-28T19:31:21.237 に答える