gpt4 book ai didi

java - 通过自定义类在javafx中添加事件处理程序

转载 作者:行者123 更新时间:2023-11-30 02:27:58 25 4
gpt4 key购买 nike

我的 Controller 类中有非常大的事件处理方法。我将他们每个人放在一个单独的类(class)中,但现在他们不再被调用。

这是目前的实现方式:

private DragDetectedHandler dragDetectedHandler = new DragDetectedHandler(stacks, nextCards, gameTable);;
node.setOnDragDetected(dragDetectedHandler);

如果我这样调用它,它就会起作用:

node.setOnDragDetected(System.out::println);

(只是为了测试代码是否达到)

以及处理程序类:

public class DragDetectedHandler implements EventHandler<MouseEvent> {
private Stacks stacks;
private NextCards nextCards;
private Table gameTable;

public DragDetectedHandler(Stacks stacks, NextCards nextCards, Table gameTable) {
this.stacks = stacks;
this.nextCards = nextCards;
this.gameTable = gameTable;
}

@Override
public void handle(MouseEvent mouseEvent) {
System.out.println("Handle stuff here :)");
}
}

我可能忽略了一些东西,但类似的问题并没有帮助我得到答案。

所以问题是:我应该如何调用事件处理程序?或者为什么下面的代码没有调用事件处理程序?

node.setOnDragDetected(dragDetectedHandler);

最佳答案

我尝试了这段代码,发现它对我有用。

要尝试找出可能出现的问题,您可以检查正在导入的内容,并确保它是 javafx 而不是 swing 或 awt。

这是我尝试过的:

package test;

import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;

public class DragDetectedHandler implements EventHandler<MouseEvent> {

private String test;

public DragDetectedHandler(String test) {
this.test = test;
}

@Override
public void handle(MouseEvent mouseEvent) {
System.out.println("Handle stuff here :)");
}
}

和另一个类:

package test;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;


public class Test2 extends Application{

public static void main(String[] args) {
Test2.launch(args);
}

@Override
public void start(Stage stage) throws Exception {
DragDetectedHandler dragDetectedHandler = new
DragDetectedHandler("Test");
Button button = new Button();
button.setOnDragDetected(dragDetectedHandler);
Scene scene = new Scene(button);
stage.setScene(scene);
stage.show();
}

}

关于java - 通过自定义类在javafx中添加事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45132294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com