-1

これが私のコードです。それらは 2 つのファイルからのものです。

TClient.java

public class TClient{
public static void main(String[] agrs){                 
        String ip=null;//string ip
        LayoutO frame; 
        frame = new LayoutO();
        frame.setVisible(true);         
}

LayoutO.java

 public class LayoutO extends JFrame implements ActionListener {
private JPanel contentPane;
private JTextField textField;
public LayoutO() {

    textField = new JTextField();
    textField.setBounds(59, 157, 240, 39);
    contentPane.add(textField);
    textField.setColumns(10);

    JButton btnSubmit = new JButton("SUBMIT");
    btnSubmit.setBounds(93, 236, 172, 77);
    contentPane.add(btnSubmit);

    btnSubmit.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {            
    String str=textField.getText();//the aim string is here
    }
}

この GUI を使用して、「送信」ボタンを押したときに textField のテキストを取得したいと考えています。

ただし、actionPerformed の関数には戻り値がありません。

文字列「ip」(メインの文字列)を評価するために、目的の文字列(LayoutO.javaの最後の行にある目的の文字列)を取得するにはどうすればよいですか。

4

2 に答える 2

1

問題は、入力「目的」文字列はどこに行くべきかということです。TClient クラスまたはそのインスタンスに? TClient の文字列「ip」はメイン メソッド内にあるため、このメソッドの実行時にのみ存在するローカル変数です。

入力文字列がどこに行くべきかを考えてください。次に、属性またはメソッドをその場所に作成して、そこに配置できるようにします。その後、ActionListener はその場所への参照を必要とし、入力文字列をそのターゲット変数に設定するか、処理のためにメソッドに渡すことができます。

于 2013-07-04T13:57:28.373 に答える
1

Layout0コンストラクターのようにリスナーを追加すると、次のようになります。

 btnSubmit.addActionListener(this);

これはアクションを待ちません。単純にリスナーを「登録」して戻ります。イベントが発生するactioPerformedと、呼び出されます。

新しい文字列が入力されたときに処理を行うメソッドを TClient に作成する必要があります。

リスナー:

public void actionPerformed(ActionEvent e) {            
    String str=textField.getText();//the aim string is here
    TClient.newStringSubmited(str);
}

そして TClient では:

public void newStringSubmited(String str) {

     //do what you want with the string
}
于 2013-07-04T13:55:21.113 に答える