JavaFX2中的警报对话框-报告的接触点太多

JavaFX2中的警报对话框-报告的接触点太多,java,touch,javafx-2,Java,Touch,Javafx 2,我有一个全屏的主场景。 然后我有一个警报对话框,它扩展了Stage。它充满了自定义文本,定位在屏幕上并显示出来 问题是,当我触摸屏幕时,出现以下错误: Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: Too many touch points reported at javafx.scene.Scene$ScenePeerListener.touchEventNext(Scene.ja

我有一个全屏的主场景。 然后我有一个警报对话框,它扩展了Stage。它充满了自定义文本,定位在屏幕上并显示出来

问题是,当我触摸屏幕时,出现以下错误:

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: Too many touch points reported
    at javafx.scene.Scene$ScenePeerListener.touchEventNext(Scene.java:2626)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$10.run(GlassViewEventHandler.java:985)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$10.run(GlassViewEventHandler.java:964)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleNextTouchEvent(GlassViewEventHandler.java:964)
    at com.sun.glass.ui.View.handleNextTouchEvent(View.java:549)
    at com.sun.glass.ui.View.notifyNextTouchEvent(View.java:1004)
    at com.sun.glass.ui.TouchInputSupport.notifyNextTouchEvent(TouchInputSupport.java:117)
    at com.sun.glass.ui.win.WinGestureSupport.notifyNextTouchEvent(WinGestureSupport.java:58)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39)
    at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
    at java.lang.Thread.run(Thread.java:724)
一切正常,但在所有触摸事件中都会显示此错误

如何正确实现警报对话框? 谢谢


警报对话框的实现是这样的-。

您共享的链接中的此代码无法正常工作。它抛出编译错误。 在做了以下更改后,它对我来说工作正常

button.setOnAction(new EventHandler(){
        @Override
        public void handle(ActionEvent arg0) {
            AlertDialog.this.close();
        }
    });

if(宽度

如果对您有效,请在做出这些更改后告诉我。我假设您必须正确设置了owner阶段。

如果您无法更新到java 9(问题已解决),您可以尝试在Scene类中的touchPoint数组上使用RefAction,在引发异常以及Scene类中相关的其他字段后重置它,这对我来说是有效的。您还需要在整个应用程序上使用try-catch块来捕获运行时异常。

不过,我还没有在基于触摸的设备上测试过这段代码。您的问题是否特定于触摸敏感设备?谢谢。我认为这个错误与dialog无关,但通常与JavaFX有关-请参阅。
button.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent arg0) {
             AlertDialog.this.close();
        }
    });
if (width &lt; WIDTH_DEFAULT)
        width = WIDTH_DEFAULT;
if (width < WIDTH_DEFAULT)
  width = WIDTH_DEFAULT;