- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的 previous problem 有问题.我在代码库的其他地方也有代码 SwingUtillities.invokeAndWait
,但是当我删除它时,gui 不会刷新。如果我不删除它,我得到的错误是:
Exception in thread "AWT-EventQueue-0" java.lang.Error: Cannot call invokeAndWait from the event dispatcher thread
at java.awt.EventQueue.invokeAndWait(Unknown Source)
at javax.swing.SwingUtilities.invokeAndWait(Unknown Source)
at game.player.humanplayer.model.HumanPlayer.act(HumanPlayer.java:69)
HumanPlayer.act 中的代码是:
public Action act(final Action[] availiableActions) {
try {
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
gui.update(availiableActions);
}
});
}
catch (InterruptedException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
synchronized(performedAction){
while(!hasPerformedAction()){
try {
performedAction.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
setPerformedAction(false);
}
return getActionPerfomed();
}
由于屏幕不绘制而处于调试状态时的线程图像: alt text http://img684.imageshack.us/img684/6669/69288941.png
堆栈的文本版本:
ui.startup.LoginScreen at localhost:51050
-> Deamon Thread [AWT-Windows] (Running)
-> Thread [AWT-Shutdown] (Running)
-> Thread [AWT-EventQueue-0] (Running)
-> Thread [DestroyJavaVM] (Running)
最佳答案
答案是而不是打电话
new GameInitializer(userName, player, Constants.BLIND_STRUCTURE_FILES.get(blindStructure), handState);
从 EDT 开始,让它在新的(非 EDT)线程上执行,以便稍后在调用 invokeAndWait
时它可以正常运行,因为运行该命令的线程不是 EDT。修改后的代码如下:
Thread t = new Thread(new Runnable() {
@Override
public void run() {
new GameInitializer(userName, player, Constants.BLIND_STRUCTURE_FILES.get(blindStructure), handState);
}
});
t.start();
关于java - 从 EDT 调用 invokeAndWait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435397/
发生在后台的进程会触发回调以询问各种问题。 在这种情况下,问题是“可以迁移您的数据吗?”,所以我必须询问用户。由于我们必须在 EDT 上完成所有 Swing 工作,因此最终看起来像这样(我只删除了注释
这个问题在这里已经有了答案: invokeAndWait method in SwingUtilities (2 个答案) 关闭 9 年前。 谁能告诉我这两个代码之间的实际区别是什么,因为它们都产生
我的问题与this有关问题,已经有了答案: yes, there is a happens-before relationship imposed between actionsof the thre
以下代码运行良好 abstract class FunctionRunnable implements Runnable { protected abstract V calculate();
我正在尝试保存 JFrame 的 .PNG 图像。在 JFrame 中,我有两个 Plot3DPanel 对象。很可能是因为同步错误,在保存 .PNG 时左侧尺寸的框架是不可见的。 因此,我使用以下代
run() 方法中的代码未被执行。谁能告诉我为什么? startButton.addActionListener(new ActionListener() { public v
我的 previous problem 有问题.我在代码库的其他地方也有代码 SwingUtillities.invokeAndWait,但是当我删除它时,gui 不会刷新。如果我不删除它,我得到的错
我在某处读到,对于任何影响 gui 视觉效果的线程,它都应该使用 SwingUtilities.invokeAndWait/invokeLater 在 EDT 中运行 对于基本的 gui,是否有必要使
SwingUtilities.invokeAndWait() 抛出一个 InterruptedException 和一个 InvocationTargetException 我应该如何处理这些? p
当 Runnable 与 SwingUtilities.invokeAndWait() 一起使用时是否创建了一个新线程? 最佳答案 不,当 Runnable 与 SwingUtilities.invo
请解释 SwingUtilities 中的 invokeAndWait() 方法。我无法理解这一点。解释的很清楚。 如果你用一个例子来尝试会很有帮助。 编辑添加@noob的问题扩展: this 有什么
我在this post中提到的问题实际上是由于跨线程 GUI 问题而发生的(我希望如此)。 您能帮我处理 Java 版本的操作委托(delegate)吗? 在 C# 中,它是这样内联完成的:
我有一个在多个线程上运行的 Swing 应用程序,我在 EDT 上创建了 Swing 组件。 Executor 会在某个时刻启动将文本插入到 JTextArea 的线程。但是,与 InvokeAndW
很确定是这样 - 但我想确定 -是在 invokeLater() 或 invokeAndWait() 的情况下给出的 happens-before 关系? 这些方法在(分别为 SwingUtiliti
我一直在使用以下方法创建组件并从 Swing 向/从 EDT 外部返回值。例如,以下方法可以是 JFrame 的扩展,以创建一个 JPanel 并将其添加到父级 JFrame: public JPan
我偶然发现了一个使用 invokeAndWait 的问题。下面的示例代码说明了这个问题。谁能详细说明发生了什么?为什么 lambda 表达式挂起而匿名内部类和方法 ref 没有挂起。 public c
我创建了一个 Swing GUI,它是从其他 Java 类文件调用的。 GUI 的构造函数: public AdviceGUI(AdviceModel model) throws Invocation
我有这个代码: try { SwingUtilities.invokeAndWait(new Runnable() { public void run() {
我正在使用 Eclipse RCP 和 Swing 开发一个项目。我看到两对方法 invokeLater()/invokeAndWait() 和 asyncExec()/syncExec() 被大量使
编辑:我已经提到了这个link并且我能够理解 InvokeLater 的代码流。我的问题是,为什么这个逻辑是这样实现的?有什么具体原因吗? 以下是我的代码: private void init()
我是一名优秀的程序员,十分优秀!