Я считаю, что это очень глупый вопрос, но мне этого не удается. Если вы создали проект FXML-Template с Java, вы автоматически получаете три файла. Представление в XML, контроллер и начальный файл в java. Я хочу использовать сцену в классе контроллера, но я не знаю, как сделать ссылку для этого. Вот мой пример:JavaFX Использование шаблона Netbeans Приложение Javfx FML
public class CatchTheScene extends Application {
private Scene scene;
private Parent root;
@Override
public void start(Stage stage) throws Exception {
root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
FXMLDocumentController controller = new FXMLDocumentController(this);
scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
/**
* @return the scene
*/
public Scene getScene() {
return scene;
}
/**
* @param scene the scene to set
*/
public void setScene(Scene scene) {
this.scene = scene;
}
}
общественного класса FXMLDocumentController реализует Initializable {
private CatchTheScene c;
@FXML
private Label label;
@FXML
private Button button;
@FXML
private AnchorPane root;
@FXML
private void handleButtonAction(ActionEvent event) {
System.out.println("You clicked me!");
label.setText("Hello World!");
}
public FXMLDocumentController(CatchTheScene c)
{
this.c = c;
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
c.getScene().addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
System.out.println("I am the scene and have been clicked");
}
});
}
}
Есть ли конкретная причина, вы хотите сделать это в контроллере? «Scene» не является частью FXML, поэтому на самом деле нет смысла регистрировать обработчики событий на нем в контроллере FXML. Вы можете зарегистрировать обработчик со сценой в методе 'Application.start()' или (возможно, менее распространенный), создать «Scene» в файле FXML. –
Приведенный выше пример является лишь примером для упрощения моей проблемы. Я пытаюсь создать игру, где я хочу поместить все элементы управления в класс контроллеров в соответствии с шаблоном MVC. Поэтому было бы прекрасно, если бы вы знали, как справиться с этой проблемой. Я создал GUI с помощью Scene Builder. Возможно, есть возможность объявить сцену в Scene Builder. В этом случае было бы проблемой для решения моей проблемы. – user3747849