有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java处理来自另一个类的按钮按下

我正在创建一个大型项目来跟踪财务状况。因此,我通过在其他类中定位元素,然后在主程序中使用聚合来实现它们,从而清理了代码。唯一的问题是我已经开始研究互动和处理按钮按下,但我无法正常注册任何按钮按下。下面是清晰的示例代码来突出问题

主执行类

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) 个答案

  1. # 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);
    }