如何单击位于方法以外的其他类中的按钮

时间:2019-06-05 10:09:43

标签: java javafx

我在触发另一个类中的按钮时遇到问题。

我尝试在参数中传递按钮,但是我得到的空异常错误与我创建的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();
    }
}

1 个答案:

答案 0 :(得分:1)

问题

未连接到代码的XML(我假设您具有XML布局)。

解决方案

在架构方面,更好的方法是将“业务”逻辑与UI逻辑分开。假设您在radioButtonOnClick中有一些代码。

  • 将代码移到新类中以其自身的特色
  • 将所述类添加为两个类的依赖项;
  • 在两个类中都运行新方法。

如果我需要使用按钮怎么办

您可以创建它:

//A button with an empty text caption.
Button button1 = new Button();

然后致电fire ()

如果控制元素没有fire方法

下面是RadioMenuItemEventHandler的示例:

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