我正在创建一个大型程序来跟踪财务状况。因此,我通过将元素定位在其他类中来清理代码,然后使用聚合在我的主程序中实现它们。唯一的问题是我已经开始处理交互和处理按钮按下,但我无法正常注册任何按钮按下。下面是突出显示问题的干净示例代码。
主执行类
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.application.Application;
import javafx.scene.layout.Pane;
import javafx.event.ActionEvent;
public class testingButton extends Application{
private buttonClass add;
@Override
public void start(Stage stage){
add = new buttonClass();
Pane root = new Pane();
root.getChildren().addAll(add.getB());
Scene scene = new Scene(root, 150,150);
stage.setTitle("Testing Visual elements");
stage.setScene(scene);
stage.show();
}
public void processButtonPress(ActionEvent event){
if(event.getSource() == add.getB()){
System.out.println("testing");
}
}
public static void main(String[] args){
launch(args);
}
}
聚合按钮类
import javafx.scene.control.Button;
public class buttonClass{
private Button b;
public buttonClass(){
b = new Button("Button");
b.setLayoutX(50);
b.setLayoutY(50);
}
public Button getB(){
return b;
}
}
如何按下按钮进行注册?任何帮助,不胜感激。谢谢!
这是您需要的代码...
您需要将操作事件应用于按钮,而不是尝试从操作事件获取按钮
public class JavaApplication3 extends Application {
ButtonClass add;
@Override
public void start(Stage stage) {
add = new ButtonClass();
Pane root = new Pane();
root.getChildren().add(add);
Scene scene = new Scene(root, 150, 150);
stage.setTitle("Testing Visual elements");
stage.setScene(scene);
stage.show();
add.setOnAction((javafx.event.ActionEvent event) -> {
System.out.println("Button pressed");
});
}
public static void main(String[] args) {
launch(args);
}
和按钮类
public class ButtonClass extends Button {
private Button b;
public ButtonClass() {
b = new Button("Button");
b.setLayoutX(50);
b.setLayoutY(50);
}