我有一个全屏主场景。 然后我有一个扩展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/。
答案 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 < WIDTH_DEFAULT)
width = WIDTH_DEFAULT;
到
if (width < WIDTH_DEFAULT)
width = WIDTH_DEFAULT;
如果对您有所帮助,请在进行这些更改后告知我们。我假设您必须正确设置所有者阶段。
答案 1 :(得分:0)
如果您无法更新到Java 9(解决了问题),则可以尝试对Scene类中的touchPoint数组使用反射,一旦引发异常以及与Scene中相关的其他字段,就将其重置上课,对我有用。您还需要在整个应用程序上使用try catch块,以捕获Runtime异常。