java如何在线程中弹出对话框

我在线程中调用MessageDialogdialog=newMessageDialog(参数省略下);dialog.open();在dialog.open();这里错误;... 我在线程中调用
MessageDialog dialog =
new MessageDialog(参数省略下);
dialog.open();

在dialog.open();这里错误;深入发现时跟shell有关的一个错误
是什么原因的关系?
参数中的shell是正确的,在其他地方测试过。
展开
 我来答
趣事情
2015-12-25 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
1.显示一个错误对话框,该对话框显示的 message 为 'alert':

JOptionPane.showMessageDialog(null, "alert", "alert", JOptionPane.ERROR_MESSAGE);

2.显示一个内部信息对话框,其 message 为 'information':

JOptionPane.showInternalMessageDialog(frame, "information","information", JOptionPane.INFORMATION_MESSAGE);

3.显示一个信息面板,其 options 为 "yes/no",message 为 'choose one':

JOptionPane.showConfirmDialog(null, "choose one", "choose one", JOptionPane.YES_NO_OPTION);

4.显示一个内部信息对话框,其 options 为 "yes/no/cancel",message 为 'please choose one',并具有 title 信息:

JOptionPane.showInternalConfirmDialog(frame,
"please choose one", "information",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.INFORMATION_MESSAGE);

5.显示一个警告对话框,其 options 为 OK、CANCEL,title 为 'Warning',message 为 'Click OK to continue':

Object[] options = { "OK", "CANCEL" };
JOptionPane.showOptionDialog(null, "Click OK to continue", "Warning",
JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
null, options, options[0]);

6.显示一个要求用户键入 String 的对话框:

String inputValue = JOptionPane.showInputDialog("Please input a value");

7.显示一个要求用户选择 String 的对话框:

Object[] possibleValues = { "First", "Second", "Third" };
Object selectedValue = JOptionPane.showInputDialog(null, "Choose one", "Input",
JOptionPane.INFORMATION_MESSAGE, null,
possibleValues, possibleValues[0]);
iamKweny
2013-05-12 · 超过13用户采纳过TA的回答
知道答主
回答量:25
采纳率:0%
帮助的人:37万
展开全部

Invalid thread access

SWT的非UI线程不能直接访问UI线程,需要使用Display提供的同(异)步调用,如——

new Thread(new Runnable() {
    public void run() {
        Display.getDefault().syncExec(new Runnable() {
            @Override
            public void run() {
                MessageDialog dialog = new MessageDialog(参数省略下);
                dialog.open();
            }
        });
    }
}).start();

这是同步调用,需要等待UI线程处理完成之后,才能继续,异步调用是Display.asyncExec(Runnable r),不等待UI面线程处理结果。

关于这方面的资料网上很多,更详细的信息建议搜索一下看看。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式