作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有以下 fun
将由非事件调度线程执行。在线程中间,我想要一个
但是,我发现以线程安全的方式做到这一点并不容易,因为对话框应该由事件调度线程显示。我试试
public int fun()
{
// The following code will be executed by non event dispatching thread.
final int choice;
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
// Error.
choice = JOptionPane.showConfirmDialog(SaveToCloudJDialog.this, message, title, JOptionPane.YES_NO_OPTION);
}
});
return choice;
}
当然这不会起作用,因为 choice
是最终的,我不能将对话框的返回值分配给它。
实现上述 3 个目标的正确方法是什么?
最佳答案
你试过吗:
public int fun()
{
// The following code will be executed by non event dispatching thread.
final int[] choice = new int[1];
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
// Error.
choice[0] = JOptionPane.showConfirmDialog(SaveToCloudJDialog.this, message, title, JOptionPane.YES_NO_OPTION);
}
});
return choice[0];
}
关于java - 如何在非事件派发线程中间提示确认对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750128/
我是一名优秀的程序员,十分优秀!