JavaFX 2中的警报对话框 - 报告的触点太多

时间:2013-10-20 09:32:58

标签: 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.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)

一切正常,但此错误会在所有触摸事件中显示。

我应该如何正确实施警报对话框? 感谢。

警报对话框的实现就是这个 - http://tech.chitgoks.com/2013/06/19/how-to-create-alert-dialog-like-joptionpane-in-java-fx-2/

2 个答案:

答案 0 :(得分:0)

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

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

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;

如果对您有所帮助,请在进行这些更改后告知我们。我假设您必须正确设置所有者阶段。

答案 1 :(得分:0)

如果您无法更新到Java 9(解决了问题),则可以尝试对Scene类中的touchPoint数组使用反射,一旦引发异常以及与Scene中相关的其他字段,就将其重置上课,对我有用。您还需要在整个应用程序上使用try catch块,以捕获Runtime异常。