2016-03-28 7 views
0

私はこのテストコードを持っています。ボタンを押したときにメソッドが値を返すようにします。それについて最善の方法は何でしょうか?ネストされたクラスからのJava戻り

public String test(){ 
    JFrame frame=new JFrame(); 
    frame.setSize(800,600); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 

    JButton button=new JButton("Click Me!"); 
    frame.add(button); 
} 

私はActionListenerを追加しようとしているが、私は、親メソッドから値を返す手立てを見ません。

button.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     //A return here would not work 
    } 
}); 
+0

グローバルである場合は、フォーム内のオブジェクトを更新できます。リターンの代わりに、オブジェクトを直接更新します。 – kevingreen

+1

'JFrame'の代わりに[' JOptionPane'](https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html)を使用してください。このような作業のために設計されています。 –

答えて

2

ローカル変数はfinalなければならないが、何も、その後変更することができCollectionされるのを防ぐことができません。

次のコードを見てください。

public String test(){ 
    // code 
    final List<String> list = new ArrayList<>(); 
    button.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      list.add("toBeReturned"); 
     } 
    }); 
    frame.add(button); 
    return list.get(0); 
} 
関連する問題