2014-04-06 3 views
0

UIController 클래스와 ButtonMethod 클래스가 있습니다. ButtonMethods 클래스는 버튼 액션에 대한 모든 코드를 포함합니다. ButtonMethods 클래스의 컨트롤러 클래스에서 버튼을 사용할 수 있어야합니다.컨트롤러에서 다른 클래스로 버튼을 가져 오는 JavaFX

public void lockdown() { 
    buttonLockdown.setDisable(true); 
    onLockdown = true; 
    buttonRelease.setDisable(false); 
예를 들어, 내가이 컨트롤러 클래스

ButtonMethods button = new ButtonMethods(); 
@FXML Button buttonLockdown; 
@FXML Button buttonRelease; 

그리고 예를 들어, buttonLockdown가 이상적으로

@FXML 
private void actionLockdown(ActionEvent event) { 
    button.lockdown(); 

를 클릭 ActionEvent의 인스턴스를 가지고에서 정의한, 나는 ButtonMethods가이 작업을 수행 할 수

나는 그 코드를 여러 가지 이유로 액션 이벤트에 넣을 수없고, 버튼 객체를 매개 변수에 넣는 것은 내가하려는 일을 너무 복잡하게 만든다. 그렇다면 어떻게 FXML 객체를 버튼 클래스에 넣을 수 있습니까?

답변

3

봅니다 매개 변수로 UIController 자체를 보낼 :

private UIController thisController; 

@Override 
public void initialize(URL url, ResourceBundle rb) { 
    thisController = this; 
} 

@FXML 
private void actionLockdown(ActionEvent event) { 
    button.lockdown(thisController); 

public void lockdown(UIController controller) { 
    controller.getButtonLockdown().setDisable(true); 
    onLockdown = true; 
    controller.getButtonRelease().setDisable(false); 

는 또한 적절한 상황에서 바인딩을 사용할 수 있습니다.

관련 문제