我試圖使清潔和OOP代碼爲Java Swing GUI的。 所以我做了一個實現了Runnable的類,並且應該處理所有的操作。 我存儲在一個數據類中的所有數據和組件都充滿了getters和setter。爪哇 - Actionlistner中(不是內部)運行的類不執行
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;
}
}
但這種方式在actionPerformed代碼是行不通的。線程啓動並且運行方法運行良好。但可能它不想將ActionListener
添加到get方法中。即使我試過這個:
JButton browse = data.getBrowseButton();
browse.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
//Some code
}
});
data.setBrowseButton(browse);seButton(browse);
但即使這樣也不正確。
所以沒有任何人知道如何一個ActionListener從另一個類添加到一個按鈕? 謝謝:)
,這些按鈕不會在一個UI的任何地方進行註冊。 –
我看不到任何不執行的原因!但我的問題是:你甚至試圖採取行動嗎?你有沒有嘗試去衝它? – Sage
@SotiriosDelimanolis我將它們添加到UserInterface類中,但這不適合解決此問題。 – Lutske