자바 스윙 GUI에 대한 정리 및 OOP 코드를 만들려고합니다. 그래서 Runnable을 구현하는 클래스를 만들고 모든 액션을 처리해야합니다. 데이터 클래스에 저장된 모든 데이터와 구성 요소는 getter 및 setter로 가득합니다. Java - (내부가 아닌) 실행 클래스의 작업 목록이 수행하지 않습니다.
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의 코드가 작동하지 않습니다 이런 식으로. 스레드가 시작되고 run 메소드가 잘 작동합니다. 하지만 아마도 get 메소드에 ActionListener
을 추가하는 것을 원하지 않을 것입니다. 심지어 내가 이것을 시도 :
JButton browse = data.getBrowseButton();
browse.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
//Some code
}
});
data.setBrowseButton(browse);seButton(browse);
하지만 그게 옳지 않아.
다른 사람이 ActionListener를 다른 클래스의 Button에 추가하는 방법을 알고 있습니까? 고마워요 :)
이 버튼은 UI에 등록되지 않은 것 같습니다. –
나는 공연하지 않을 이유가 없다. 하지만 제 질문은 : 당신은 심지어 행동을 시도 했습니까? 그것을 주먹으로 치려고 했습니까? – Sage
@SotiriosDelimanolis UserInterface 클래스에 추가하지만,이 문제를 해결하는 것은 아닙니다. – Lutske