Как получить FXML объект JavaFX
хочу получить FXML объект, но получаю null. В то же время, если передавать ссылку в аргумент в метод, то ссылка валидна.
import controller.MainController;
import javafx.scene.control.MenuButton;
public class MenuButtonEvent {
static MainController mc = new MainController();
public static void setText(MenuButton mb) {
MenuButton m = mc.getMenuButton();
System.out.print(m); //null
System.out.print(mb); // MenuButton[id=menuButton, styleClass=menu-button]'3x3'
}
}
MainController:
import javafx.fxml.FXML;
import javafx.scene.control.MenuButton;
public class MainController {
@FXML
private MenuButton menuButton;
@FXML
public MenuButton getMenuButton() {
return menuButton;
}
}
Ответы (1 шт):
Автор решения: Alexesy Ivashin
→ Ссылка
А у вас есть файл fxml?
Если нет, то вот вам код, который должен работать т.к вы хотите
Main.java
public class Main extends Application{
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Main.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setTitle("Пример");
stage.setWidth(250);
stage.setHeight(200);
stage.show();
}
}
Main.fxml
<?import java.lang.*?>
<?import javafx.scene.Group?>
<?import javafx.scene.control.Button?>
<Group fx:id="root" xmlns:fx="http://javafx.com/fxml/1" fx:controller="MainController">
<MenuButton <!-- свойства кнопки --> onAction="#click" />
</Group>
MainController.java
public class MainController {
@FXML
private MenuButton btn;
@FXML
private void click(ActionEvent event) {
//делайте что то со своей кнопкой
}
}