我在触发另一个类中的按钮时遇到问题。
我尝试在参数中传递按钮,但是我得到的空异常错误与我创建的getter一样。
public class ButtonHolder{
@FXML
RadioButton radioButton;
public void radioButtonOnClick(){
//does something
}
public RadioButton getRadioButton(){
return this.radioButton;
}
}
public class Example{
public void fireButton(){
ButtonHolder buttonHolder = new ButtonHolder();
buttonHolder.getRadioButton.fire();
}
}
答案 0 :(得分:1)
问题
未连接到代码的XML(我假设您具有XML布局)。
解决方案
在架构方面,更好的方法是将“业务”逻辑与UI逻辑分开。假设您在radioButtonOnClick
中有一些代码。
如果我需要使用按钮怎么办
您可以创建它:
//A button with an empty text caption.
Button button1 = new Button();
然后致电fire ()
。
如果控制元素没有fire
方法
下面是RadioMenuItem
和EventHandler
的示例:
MenuBar menuBar = new MenuBar();
Menu menu = new Menu("Menu 1");
RadioMenuItem choice1Item = new RadioMenuItem("Choice 1");
choice1Item.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
System.out.println("radio toggled");
}
});
RadioMenuItem choice2Item = new RadioMenuItem("Choice 2");
RadioMenuItem choice3Item = new RadioMenuItem("Choice 3");
ToggleGroup toggleGroup = new ToggleGroup();
toggleGroup.getToggles().add(choice1Item);
toggleGroup.getToggles().add(choice2Item);
toggleGroup.getToggles().add(choice3Item);
menu.getItems().add(choice1Item);
menu.getItems().add(choice2Item);
menu.getItems().add(choice3Item);
menuBar.getMenus().add(menu);
VBox vBox = new VBox(menuBar);
Scene scene = new Scene(vBox, 300, 275);
primaryStage.setScene(scene);
primaryStage.show();
如果我想使用XML中的按钮怎么办
看一下FXML教程: https://riptutorial.com/javafx/example/5125/example-fxml