Java Swing GUI 用のクリーンで OOP コードを作成しようとしています。そこで、Runnable を実装し、すべてのアクションを処理するクラスを作成しました。ゲッターとセッターでいっぱいのデータクラスに保存したすべてのデータとコンポーネント。
public class UserInterface{
...
public void foo(){
PanelActions panelActions = new PanelActions();
Thread tProgressbar = new Thread(panelActions, "Update progressbar");
tProgressbar.start();
}
}
public class PanelActions implements Runnable{
GUIdata data = new GUIdata();
public void run(){
//submitButton
data.getSubmitButton().addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt) {
//Some code
}
});
//Browse Button
data.getBrowseButton().addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt) {
//Some code
}
});
};
}
ゲッターとセッタークラス:
public class GUIdata{
private JButton submitButton;
private JButton browseButton;
GUIdata(){
submitButton = new JButton();
browseButton = new JButton();
}
public JButton getSubmitButton() {
return submitButton;
}
public void setSubmitButton(JButton submitButton) {
this.submitButton = submitButton;
}
public JButton getBrowseButton() {
return browseButton;
}
public void setBrowseButton(JButton browseButton) {
this.browseButton = browseButton;
}
}
しかし、この方法では、実行されるアクションのコードは機能しません。スレッドが開始され、run メソッドがうまく機能しています。しかし、おそらくActionListener
get メソッドに を追加するのは好きではありません。私もこれを試しました:
JButton browse = data.getBrowseButton();
browse.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
//Some code
}
});
data.setBrowseButton(browse);seButton(browse);
しかし、それも正しい方法ではありません。
別のクラスからボタンに ActionListener を追加する方法を知っている人はいますか? ありがとう :)