【发布时间】:2019-08-22 02:42:11
【问题描述】:
我正在编写一个 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);
我认为问题出在上面的代码块上,就像我打破了一些基本的挥杆规则一样。我的另一个想法是它有两种方法可以同时编辑同一个文本区域,因为我有其他方法设置文本区域的文本。
对于错误的解决方案或执行上述方法的更好方法,我会很高兴。只需要每秒运行一次而不会崩溃。
谢谢。
编辑:一个新的发展,我现在一直得到一个“线程异常”AWT-EventQueue-0“java.lang.NullPointerException”,但堆栈跟踪没有引用我的代码中的任何位置。
【问题讨论】:
-
您正在编写 JavaFX 或 Swing 应用程序吗?还是您将一个嵌入另一个?
-
我正在编写一个 javafx 应用程序,但是为了做计时器,我查了一下,他们使用了我所知道的摆动嵌入,所以计时器是摆动嵌入(虽然我可能是错的,我是一个初学者)。
-
对于 Swing,我相信您会使用
javax.swing.Timer处理 UI 相关任务,使用javax.swing.SwingWorker处理后台任务。对于 JavaFX,您可以将 animation API 用于 UI 相关任务,将javafx.concurrent.Worker用于后台任务。
标签: swing javafx swingutilities