我已经用谷歌搜索了一段时间,我发现基本上,一些网页说没有大的差异。除了一些点:
EventFilter 在 EventHandlerEventFilter 对 event.Consume(); 不敏感
让我看看我是否理解它:
假设我有:
按钮 b= new Button("Test");
b.addEventHandler(.....){...};
b.addEventFilter(......){...};
假设它们都“链接”到 MouseEvent.MOUSE_CLICKED;那么,EventFilter的代码会最先被执行!?
假设,现在,我有:
Button b= new Button("Test");
b.addEventHandler(.....);
b.addEventFilter(......){
//some code
event.consume();
}; // First filter
b.addEventFilter(......){
//some other code
event.consume();
}; // Second filter
在这种情况下,船 EventFilter 将被执行,但 EventHandler 不会。对吧?
还有什么要知道的吗?在某些情况下我应该选择其中一种吗?为了解决一些问题,我有时应该一起使用它们吗?
谢谢!
最佳答案
每当事件发生时,它都会遵循一个流程来确定场景图中的哪个节点应该处理该事件。该过程采取以下步骤:
目标选择假设您的场景包含一个带圆圈的窗格。如果您点击圆圈,圆圈将成为事件目标。
路由构造 接下来,JavaFX 创建一个路由(或事件调度链)。在我们的示例中,链看起来像 stage -> scene -> pane -> circle
事件捕获 事件通过链上的每个事件过滤器进行。只要其中一个过滤器调用 consume(),链就会停止并且该节点成为目标。如果没有过滤器调用 consume(),则链的末端(圆圈)仍然是目标。
事件冒泡 接下来,事件再次通过链推送,但这次是从事件目标到舞台。因此,如果 Pane 事件过滤器调用 consume(),将命中以下事件处理程序:pane -> scene -> stage
因此不同之处不仅在于这些处理程序何时被激活,而且事件过滤器可以阻止子节点接收事件。
关于JavaFX : what is the difference between EventHandler and EventFilter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25740103/
我正在尝试从Java程序执行Javascript函数。Javascript函数获取HTML文件的内容并突出显示特定单词的出现。是否可以从webview对象调用Javascript函数? 最佳答案 要在WebView中运行javascript,您可以使用WebEngine.executeScript()方法。并且有很多方法可以通过javascript突出显示文本。例如。HighlightwordinHTMLtext(butnotmarkup)一起:WebViewwebView=newWebView();finalWebEngineen
我正在开发一个主要是美化网页的JavaFX应用程序。它是一个桌面应用程序(它没有嵌入到网页中)并且它有一个用于主UI的WebView。该应用程序本身的唯一目的是使用Bluecove访问蓝牙设备,因为在Web浏览器上直接使用JavaScript是不可能的。概念验证工作正常(我能够从Java调用JavaScript代码,反之亦然)但我有一个额外的要求,即从JavaScript中调用任意Web服务/API,但这违反了同源策略(类似于这在Android上:AllowremoteajaxcallsinanAndroidWebview+jquerymobile)。这在JavaFX上可行吗?有什么建
我想在NetBean8.0.2中构建.jar。我开发了一个基于javafx应用程序的小项目。我的项目使用诸如com.sun.org.apache.xml.internal.security、com.sun.org.apache.xml.internal.security.c14n和com.sun.org.apache.xml.internal.security.utils.我的项目在Netbean上运行良好,没有警告或错误。但是当我将这个项目构建为jar文件时,发生了以下错误:**error:packagecom.sun.org.apache.xml.internal.security
我正在使用javafx设计自定义XMLView。想象一下以下XML。EmpireBurlesqueBobDylanUSAColumbia10.901985现在我希望用户能够编辑标题、艺术家等,而他不能更改XML的其余部分。请注意,我的目标是使用XML样式实现此目的,而不是向用户显示输入、对话框。有什么办法可以实现吗? 最佳答案 你可以使用TextFormatter使用正则表达式过滤器以确保格式:这只是一个小示例:(您应该根据需要调整正则表达式)TextAreata=newTextArea();ta.setText("\nEmpire
我有一个用SceneBuilder生成的TableView,所有列都是从其他View导入的FXML,直到没有问题,但列没有填满宽度。我试图用场景构建器和FXML解决这个问题,但没有成功,所有的尺寸都被计算出来了。我尝试使用更改监听器对其进行编码,该监听器会在每次窗口更改大小以适应列的大小时进行检查。这行得通并且列的大小调整到适当的宽度(基本上我得到TableView宽度并将其除以列数),但由于某种原因列开始的点没有改变并且它们与彼此。有什么建议吗? 最佳答案 在Scenebuilder中选择TableView,然后转到属性,将“Co
我是JavaFX的新手。仍在摆弄一些示例,以尝试确定这是否适用于我们正在尝试构建的应用程序。我们应用程序的第一阶段是一种数据输入阶段,用户将准备好提出很多问题并记录他的回答。这里的问题是,另一个团队正在构建问题集,并且这些问题在XML中,如下所示。EnterthenameoftheComponentSelectmechanismtypeType1Type2Type3Type4Whetherthepartshavebeenverifiedbythesupervisor?WhetherthecomponentisavailablewithinthedomicileEnterthequant
我已经在互联网的最深处进行了搜索,但似乎找不到答案-.-问题出在我要编写的javaFx程序中。但除了添加Controller类之外,我无法做任何进一步的事情。我几乎遵循了所有可以找到的教程,但我仍然不知道这个问题。这是异常(exception)情况:javafx.fxml.LoadException:/U:/BankingSolutions/MediaCenterFX/bin/main/ressources/view/MainUI.fxml:12atjavafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2617)at
如何在`.fxml文件的TextArea中编辑text我可以使用linebreaks和tabs。文本区域是预定义的,无法编辑。支持图片FXML文件View 最佳答案 如果你想直接使用文本你可以使用一些东西:如果你想在SceneBuilder中使用,你可以切换到多行模式。切换到多行模式,场景构建器将插入: for\n for\t 关于xml-Javafxfxml文件TextArea文本中的换行符和制表符,我们在StackOverflow上找到一个类似的问题:
我正在用Java和JavaFX创建一个闹钟。问题是,即使应用程序已关闭,我如何运行该应用程序计时器。例如:-有人在上午9:00设置了闹钟,但当前时间是上午8:00并关闭了应用程序,然后预定的闹钟重置并且不起作用(在我的情况下)。我想像Windows中的闹钟一样。即使有人关闭闹钟应用程序,它也会在指定时间显示通知并响起。我也用谷歌搜索了这个问题,但到处都发现只有android和一些警报管理器功能(我对此一无所知),这就是我自己发布的原因。提前感谢您的帮助。 最佳答案 默认情况下,当最后一个阶段关闭时,JavaFX会终止您的应用程序。您
我需要删除“关闭窗口”,它是右键单击任务栏程序时窗口中的菜单项。我该怎么做? 最佳答案 你不能。这是适用于所有最小化应用程序的Windows功能。它与JavaFX或Java本身无关。 关于java-如何在Windows的任务栏上阻止或更改我自己的javafx应用程序符号的右键单击菜单,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/46542844/