处理按下另一个班级的按钮

时间:2017-11-11 22:09:37

标签: java javafx event-handling

我正在创建一个跟踪财务状况的大型计划。因此,我通过在其他类中定位元素,然后使用聚合在我的主程序中实现它们来清理我的代码。唯一的问题是我开始处理交互和处理按钮按钮,但我无法正常注册任何按钮。这是一个干净的示例代码,以突出显示问题。

主要执行类

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;
   }
}

如何按下按钮进行注册?任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:-1)

以下是您需要的代码......

你需要对按钮应用actionevent而不是试图从actionevent

获取按钮
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);
}