我正在尝试为 java swing GUI 制作干净的 OOP 代码。所以我创建了一个实现 Runnable 的类并且应该处理所有的动作。我存储在一个充满 getter 和 setter 的数据类中的所有数据和组件。
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
}
});
};
}
以及 getter 和 setter 类:
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;
}
}
但是这种方式执行的操作中的代码不起作用。线程启动并且运行方法运行良好。但可能它不喜欢在ActionListener
get 方法中添加一个。即使我试过这个:
JButton browse = data.getBrowseButton();
browse.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
//Some code
}
});
data.setBrowseButton(browse);seButton(browse);
但即使这样也不是正确的方法。
那么有人知道如何将 ActionListener 添加到另一个类的 Button 吗?谢谢 :)