我有一张卡片,它由页眉、正文和页脚组成,可以由更多节点组成,如标签、文本字段等。
我需要抓住鼠标点击事件的任何时间,当点击发生在卡内,无论它是卡本身还是其子卡之一。现在,如果我单击文本字段,事件不会被触发。
private StackPane newCard() {
//card wrapper
StackPane card = new StackPane();
VBox cardContent = new VBox();
JFXDepthManager.setDepth(card, 1);
//Header
StackPane header = new StackPane();
VBox headerContent = new VBox();
header.getChildren().add(headerContent);
Label label = new Label("Card title");
//if I click this text field, event is not triggered
TextField groupCode = new TextField();
headerContent.getChildren().addAll(label, groupCode);
//body
StackPane body = new StackPane();
//footer
StackPane footer = new StackPane();
cardContent.getChildren().addAll(header, body, footer);
card.getChildren().add(cardContent);
//event
card.setOnMouseClicked(event -> System.out.println("Clicked!"));
return card;
}
就像上面的例子一样,如果我单击文本字段来键入某些内容,单击!
未打印。
你可以用
card.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> System.out.println("Clicked!"));
这里描述了JavaFX中事件处理的完整机制。不过,简而言之,事件有一个目标,在本例中,该目标是与鼠标单击相交的最顶部节点。(直观地说,它是用户在其上单击的节点。)因此,如果在文本字段中单击,则目标是文本字段。事件调度分为两个阶段:捕获和冒泡。在捕获阶段,事件首先传递给根节点,然后传递给作为目标祖先的根节点的子节点,依此类推,直到到达目标。在捕获阶段,将调用向相应节点注册的任何事件过滤器。一旦事件捕获完成,冒泡阶段开始。在冒泡阶段,事件首先传递给目标节点,然后传递给其父节点,依此类推,直到它再次到达根节点。在冒泡阶段,将调用向节点注册的事件处理程序。
在事件处理的任何阶段,筛选器或处理程序都可能使用该事件。这从本质上防止了事件的进一步传播。某些控件具有内置的处理程序,这些处理程序使用某些事件;示例中的文本字段是一个。因此,在文本字段上单击鼠标不会传播到父节点中的处理程序。注册事件筛选器而不是处理程序允许处理程序处理事件。
问题内容: 我有一张卡,它由页眉,正文和页脚组成,可以由更多节点组成,例如标签,文本字段等。 当 卡内 发生单击时,无论何时是卡本身还是它的子代之一,我都需要捕捉事件。现在,如果我单击文本字段,则不会触发事件。 因此,就像上面的示例一样,如果我单击文本字段键入内容,则不会打印。 问题答案: 你可以用 这里描述了JavaFX中事件处理的完整机制。简而言之,事件具有 target ,在这种情况下, t
我有一个人员搜索脚本,在您键入时显示建议。结果的结构大致如下: 由于人员列表会随着您的键入而改变,到目前为止,我使用jQuery的live()函数自动将click事件绑定到所有的.person元素。这是不推荐的和糟糕的做法,所以我正在尝试更新代码。 我觉得我需要这样的东西: 但是我想更多地了解一下如何在vanilla JavaScript中处理这个问题。我以为当点击带有click事件的项的子项时,
如何选择以下条件: 选择不带子项的所有父项 选择所有父级和子级 选择带有雄性子项的所有父项(因此,当通过groovy类型转换转换为JSON时,只应包括雄性子项) 我不知道如何开始编码1和2,也许与有关--我真的不知道。虽然我在第3章的想法是: 但问题是,当转换为JSON时,它包含了非男性条目。有谁能帮我解决问题吗?使用会很好,但也可以在中使用。
我试图想出一个解决方案,允许多个窗格节点在组装成StackPane时独立处理鼠标事件 我希望能够在每个子级中处理鼠标事件,并且第一个调用消费()的子级会停止将事件传递给下一个子级。 我也知道setPickOnBands(false),但这并不能解决所有情况,因为一些覆盖将基于Canvas的像素,即不涉及场景图。 我用尝试了各种实验。然而,这些总是导致递归以堆栈溢出告终。这是因为事件是从根场景传播的
在显示imageView的可调整大小的窗格中,我想选择多个矩形。 为此,我创建了一个类SelecTableImageViewPane。ImageViewPane和RubberBandSelection这两个类来自com.bitplan.javaFX项目,我是该项目的提交人。 当调整窗口的大小时,相关窗格的大小也会调整得很好,您可以从SelectableImageViewPaneDemo产生的调试输
问题内容: 在下面的函数中,我获得带有属性的textarea对象。 此处,嵌套解构使用和变量。但是变量不起作用。 问题答案: 第一个解构仅创建和变量。如果要创建为变量,则需要再次声明。 您可以在Babel编译器上对其进行测试: 这段代码: 被转移到: 如您所见,未创建变量。