好的 - 我已经为此奋斗了很久,阅读了一百万篇文章、教程等。它们似乎都没有直接解决我在这里想做的事情。我有这个小代码示例来说明。
基本上,我希望能够从按钮引发/触发自定义事件并让标签响应该事件。
(请注意,除了我在这里尝试使用实际的 Event 对象之外,我没有兴趣寻找其他方法来做到这一点。我非常清楚如何使用更改侦听器等来做到这一点,但我想学习如何这样做。)
这是代码,您可以看到它没有得到我正在寻找的结果。其中大部分来自一些示例(对我来说并没有真正起作用),我承认这里有些部分让我“呼呼”。
如果有人可以帮助我让它工作,我可以稍后对其进行剖析以确保我了解到底发生了什么。这是代码:
import javafx.application.Application;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.event.EventType;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.sene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
//-------------------------------------------------------------------
public class MyDemo extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// label that should receive the event and react to it
MyLabel lblReceiver = new MyLabel("And I Should Receive & React");
// button to firs the event
Button btnSender = new Button("Initate Event");
btnSender.setPrefWidth(200);
btnSender.setOnAction(e -> {
MyEvent.fireEvent(lblReceiver, e); // really confused what the first parameter here is supposed to be.
});
// set up stage and show it
Stage stage = new Stage();
VBox root = new VBox(btnSender, lblReceiver);
root.setSpacing(10);
root.setPadding(new Insets(10, 10, 10, 10));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
}
翻翻过去那场雪
相关分类