3

だから私は小さなJavaアプリを作成していて、JTextFieldの内容を取得して値をString変数に代入する方法を考えているだけですが、以下がうまくいくと思いました:

JTextField txt_cust_Name = new JTextField();
String cust_Name;
txt_cust_Name.addActionListener(new ActionListener() 
{
    public void actionPerformed(ActionEvent e) 
    {
         cust_Name = txt_cust_Name.getText();
    }
});

これで、JtextField の値が String Cust_Name に送信されると思いました。

誰でもこれを行うためのアイデアはありますか?

乾杯。

4

5 に答える 5

3

ActionListenerは、Enterキーが押されたときにのみ起動されます。

たぶん、FocusListenerを使用して、focusLost()イベントを処理する必要があります。

または、テキストフィールドのドキュメントにDocumentListenerを追加することもできます。DocumentEventは、テキストフィールドに変更が加えられるたびに発生します。

于 2009-11-13T18:50:11.103 に答える
2

文字列変数を実際に使用する必要がある場合は、次のように言えます。

String cust_Name = txt_cust_Name.getText();

これは、この値にアクセスしようとしている時点で、すでに入力されていることを前提としています...(キーが押されるたびに変数を更新しようとするのとは対照的に)

于 2009-11-13T19:26:11.943 に答える
0

通常、JTextField はフォーム上にあり、ユーザーはOkフォームのボタンを押すまでそれを操作します。そのボタンのハンドラー ( ActionListener) は、フィールドから現在のテキスト値を取得し、それに対して何かを行います。

まったく違うことをしたいですか?入力が変化したときに応答する必要がありますか?それとも、ユーザーがフィールドを離れたときにのみ応答する必要がありますか? それとも、彼が ENTER を押すことが重要ですか?

このような非標準的な動作は、実際のユーザーを混乱させる可能性があることに注意してください。もちろん、これを自分のためにやっているだけなら、何でも構いません。

于 2009-11-13T18:59:38.867 に答える
0

このコードはかなりうまく機能することがわかりました。

package test;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Test extends JFrame {

private static final long serialVersionUID = -5624404136485946868L;

String userWord = "";
JTextField userInput;

public Test() {
    JFrame jf = new JFrame();
    JPanel panel = new JPanel();
    JLabel jl = new JLabel("Test");
    JButton jButton = new JButton("Click");
    userInput = new JTextField("", 30);
    jButton.addActionListener( (e) -> {
        submitAction();
    });
    jf.setSize(500, 500);
    jf.setVisible(true);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.add(panel);
    panel.add(jl);
    panel.add(userInput);
    panel.add(jButton);
}

private void submitAction() {
    userWord = userInput.getText();
    System.out.println(userWord);//do whatever you want with the variable, I just printed it to the console
}

public static void main(String[] args) {
    new Test();
}

}

于 2016-08-02T13:17:16.527 に答える