如何修复“(java:22494): Gdk-WARNING...”

How to fix "(java:22494): Gdk-WARNING..."

我正在编写一个 javafx 程序,我需要面板以恒定速率更新。现在它设置为每秒更新一次。但是我得到了这个错误,当整个场景变得扭曲时,通常(但不总是)在面板中出现一个小故障(它就像镜子一样以奇怪的波涛汹涌的 x 模式在自身上。很难解释)。

完整错误:(java:22494):Gdk-WARNING **:18:38:59.118:调用 XSetErrorHandler() 并推送 GDK 错误陷阱。不要那样做。

这是我的计时器代码:

Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run()  {
                SwingUtilities.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            String x = txtDisplay.getText();
                            txtDisplay.setText(x.substring(1, x.length()) + x.substring(0, 1));
                        } catch (NullPointerException e) {
                            System.out.println("Error.");
                        }
                    }
                });
            }
        }, 0, 500);

我认为问题出在上面的方块上,好像我违反了一些基本的摆动规则。我的另一个想法是它有两种方法可以同时编辑同一个文本区域,因为我有其他方法设置文本区域的文本。

我很乐意找到错误的解决方案或执行上述方法的更好方法。只需要每秒 运行 而不会崩溃。

谢谢。

编辑:一个新的发展,我现在一直得到一个 "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException" 但堆栈跟踪没有引用我的代码中的任何位置。

这看起来与 JDK-8156779 (see also JDK-8211305) 有关。 IE。 JDK 8、9 和 11 以及 GTK 3 存在一些问题。

对我来说(在 Linux Mint 20.1 和 Open JDK 11,Bellsoft 11.0.10.fx-librca 上)解决方案是使用 -Djdk.gtk.version=2[ 强制 GTK 2 =12=]

其他人已经通过升级到 JDK 12 或更高版本解决了。

Eclipse 下转到 run/run 配置 并添加以下选项到 (x)=Arguments 选项卡下的 vm 参数。

-Djdk.gtk.version=2