如何使用 TextFlow 控件处理事件?
How do I handle events with a TextFlow control?
我正在构建一个简单的登录注册表单,我正在尝试使用文本流来切换初级阶段的场景,但出于某种原因,none 我尝试过的事件处理程序使用正常
这是我目前尝试过的方法
TextFlow flow = new TextFlow(new Hyperlink("Dont have an account?"));
flow.setOnMouseClicked(actionEvent -> primaryStage.setScene(scene2));
JavaFX 中的大多数控件默认使用鼠标事件1。这意味着当您单击 Hyperlink
时,事件会在它冒泡到 TextFlow
之前被消耗掉,因此您的事件处理程序永远不会被调用。
无论如何,您可能应该设置 Hyperlink
的 onAction
属性,因为这不仅在语义上更正确,而且除了鼠标输入之外还允许对键盘输入做出反应。例如:
Hyperlink link = new Hyperlink("Don't have an account?");
link.setOnAction(e -> primaryStage.setScene(scene2));
TextFlow flow = new TextFlow(link);
// do something with 'flow'...
顺便说一句:你需要在这里使用TextFlow
吗?如果您所做的只是将 Hyperlink
放在 TextFlow
中,那么您可能应该直接使用 Hyperlink
。
1.这是由 javafx.scene.control.SkinBase
class 完成的。请参阅其 #consumeMouseEvents(boolean)
方法。
我正在构建一个简单的登录注册表单,我正在尝试使用文本流来切换初级阶段的场景,但出于某种原因,none 我尝试过的事件处理程序使用正常
这是我目前尝试过的方法
TextFlow flow = new TextFlow(new Hyperlink("Dont have an account?"));
flow.setOnMouseClicked(actionEvent -> primaryStage.setScene(scene2));
JavaFX 中的大多数控件默认使用鼠标事件1。这意味着当您单击 Hyperlink
时,事件会在它冒泡到 TextFlow
之前被消耗掉,因此您的事件处理程序永远不会被调用。
无论如何,您可能应该设置 Hyperlink
的 onAction
属性,因为这不仅在语义上更正确,而且除了鼠标输入之外还允许对键盘输入做出反应。例如:
Hyperlink link = new Hyperlink("Don't have an account?");
link.setOnAction(e -> primaryStage.setScene(scene2));
TextFlow flow = new TextFlow(link);
// do something with 'flow'...
顺便说一句:你需要在这里使用TextFlow
吗?如果您所做的只是将 Hyperlink
放在 TextFlow
中,那么您可能应该直接使用 Hyperlink
。
1.这是由 javafx.scene.control.SkinBase
class 完成的。请参阅其 #consumeMouseEvents(boolean)
方法。