私は Java でプログラミングを始めて以来、GUI を作成したいときや、より複雑なビジネス ロジックを作成するたびに、同じ問題に遭遇します。
- GUI 部分をロジック部分から完全に分離するにはどうすればよいでしょうか? 編集:「ロジック部分からGUI部分」と言うのは少し間違っているかもしれません。むしろ、匿名関数や内部クラスを書いたときのような膨大な行数のファイルは必要ないため、「リスナー部分から GUI 部分」がより正確です。
結果は次のようになります。
public class MainFrame extends JFrame{
private final Handler handler = new Handler();
public MainFrame(){
//some code...
final JButton b = new JButton("Click Me!");
b.putClientProperty("command", "some command or a static variable from a some commands class");
b.addActionListener(this.handler);
}
}
// another class in another file
public class Handler implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
if(e.getSource() instanceof JButton){
final JButton source = (JButton)e.getSource();
if(source.getClientProperty("command").equals("some command or a static variable from a some commands class")){
//do something
}
}
}
}
それを行うより良い方法を知っている人がいる場合は、教えてください。
アクションが実行されたときに GUI を更新して応答させるにはどうすればよいですか? 上記の例では、次のように記述したためです。
b.addActionListener(this.handler);
そのため、アクションがいつ実行されたかを知るのはボタン b だけです。
最初の問題に対する私の解決策が 2 番目の問題に対して信頼できない場合は、この投稿の完全な解決策を提供してください。
より多くの方の参考になれば幸いです。
ありがとう。