2013-05-08 2 views
0

То, что я пытаюсь сделать, я думаю, что это именно то, что Мэг говорит здесь: JavaFX2 : Closing a stage (substage) from within itselfЗакрытие подъярус

Когда я пытаюсь реализовать ответ JewelSea, я получаю «нестатический метод getSource() не может быть ссылки на которые статический контекст ".

Итак, у меня есть дополнительное окно (сцена), созданное в Scene Builder, с простым классом контроллера, который имеет в основном одну функцию: привяжите кнопку к обработчику события close(). Вот код, который у меня есть:

public class ProductNotFoundController 
    implements Initializable { 

    @FXML // fx:id="closeButton" 
    private Button closeButton; // Value injected by FXMLLoader 


    @Override // This method is called by the FXMLLoader when initialization is complete 
    public void initialize(URL fxmlFileLocation, ResourceBundle resources) { 

     closeButton.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent t) { 
//    ProductNotFound.avisoClose(); 
       Node source; 
       source = (Node) ActionEvent.getSource(); 
       Stage stage = (Stage) source.getScene().getWindow(); 
       stage.close(); 
      } 
     }); 

    } 

} 

Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно? И/или где я должен поместить метод close()?

ответ

2

Заменить ActionEvent на t, getSource - нестатический метод. jewelsea использовал actionEvent экземпляр класса ActionEvent.

+0

Argh! Duh! Спасибо! – John

+0

Добро пожаловать :) – tarrsalah

Смежные вопросы