- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在this post中提到的问题实际上是由于跨线程 GUI 问题而发生的(我希望如此)。
您能帮我处理 Java 版本的操作委托(delegate)吗?
在 C# 中,它是这样内联完成的:
this.Invoke(new Action(delegate()
{...}));
这在 Java 中是如何实现的?
谢谢。
public class processChatMessage implements Observer {
public void update(Observable o, Object obj) {
System.out.println("class class class" + obj.getClass());
if (obj instanceof String){
String msg = (String)obj;
formatChatHeader(chatHeader.Away, msg);
jlStatusBar.setText("Message Received");
// Show chat form
setVisibility();
}
}
}
processChatMessage 由从远程节点接收新数据触发的单独线程调用。
我认为错误是在尝试更新 GUI 控件时产生的。
你认为是这个原因吗?我问这个问题是因为我对 Java 和 C# 很陌生,但这就是我认为正在发生的事情。
解决方案:
public class processChatMessage implements Observer {
public void update(Observable o, Object obj) {
if (obj instanceof String){
final String msg = (String)obj;
try {
SwingUtilities.invokeAndWait(new Runnable( ) {
public void run( ) {
formatChatHeader(chatHeader.Away, msg);
jlStatusBar.setText("Message Received");
setVisibility();
}
});
} catch (InterruptedException e){
} catch (InvocationTargetException e){
}
}
}
}
最佳答案
最接近的等价物可能是 Runnable 接口(interface) - 基本上是一个单方法接口(interface),其方法不带参数且不返回任何值。您可以使用匿名内部类来实现类似于匿名方法的效果:
executeRunnable(new Runnable() {
public void run() {
// Do stuff here
}
});
是的,这有点冗长...但是希望 Java 7 闭包最终能够解决问题:)
现在,这就是 Action
委托(delegate)的一般思想。在这个特定实例中,您应该将SwingUtilities.invokeLater(Runnable)
和SwingUtilities.invokeAndWait(Runnable)
视为的粗略等效项分别是 Control.BeginInvoke
和 Control.Invoke
。
关于C# Action Delegate 的 Java invokeAndWait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2850865/
发生在后台的进程会触发回调以询问各种问题。 在这种情况下,问题是“可以迁移您的数据吗?”,所以我必须询问用户。由于我们必须在 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()
我是一名优秀的程序员,十分优秀!