带有自定义图标的简单SWT警报消息?

时间:2014-10-17 15:50:27

标签: java user-interface swt jface messagebox

我是SWT新手,制作一个GUI,我只想在用户点击“确定”按钮后发出警告信息。喜欢“你的参数错误”,最好带有错误图标,“你的参数是正确的”,最好用检查图标。我做了一点点搜索,它可以用MessageBox()但它没有检查或勾选图标,我也不想打扰创建自定义图像然后将其应用到对话框。使用MessageBox()我必须创建一个新的MessageBox对象,设置文本然后打开文本...是不是有一个简单的,一行解决方案,如在Swing?例如StaticClass.showmsg(type,"String");?如果可能的话我想避免使用JFace,因为那是另一个库,我在JFace上遇到了很多错误,不能那么难......这也是我用MessageBox()得到的。看起来没有道德。

Message box example

编辑:我添加了jface和jface也没有一个检查图标(MessageDialog)所以看起来没有其他机会我将不得不自己添加检查图标,但如何? 我当前的警告信息:

MessageDialog.openWarning(Display.getDefault().getActiveShell(), "Warning", "Input parameters are wrong!")

我希望有一个MessageDialog.openOK(),但是我不知道如何在这些消息中插入自己的图标?

2 个答案:

答案 0 :(得分:2)

SWT MessageBox使用OS /窗口系统的本机消息对话框(至少在Windows上)。 SWT中的MessageBox没有预定义的检查图像。

对于“您的参数还可以”的信息性消息,我们会提供SWT.ICON_INFORMATION并提供ICON_ERROR - 错误消息。

如果这不符合您的需求,您可以联系JFace或在纯SWT中编写自己的消息对话框。如果您选择JFace,请使用MessageDialog作为标准对话框,如错误,信息,警告等,或者如果您需要更多控制对话框内容,请使用IconAndMessageDialog

答案 1 :(得分:0)

我不确定你将如何找到控制台窗口的位置(为了将窗格与其对齐而需要)但是如果您担心应用程序的整体外观,那么很可能最好只使用 一个或另一个来保持一致性。

如果您选择使用GUI,则可能会出现以下情况。

如果您收集的数据简单,您可能需要查看NetBeans Swing GUI Builder (Matisse)。人们对构建者有各种各样的看法,但我觉得NetBeans是一种熟悉Swing的公平方式,你无法超越价格。花一个小时左右的时间,浏览基础教程,您将立即设计简单的(虽然是vanilla)GUI。

如果您收集的数据很简单,可以使用showInputDialog()。这是一个简单,远非完美的下拉示例。如果您提供有关所收集数据的更多信息,我可以提供其他示例。

String response;
String[] possibleValues = { "a Pony", "a Job", "World Peace"};

JOptionPane.showInputDialog(null,
        "Choose one", "Select Something",
        JOptionPane.INFORMATION_MESSAGE, null,
        possibleValues, possibleValues[0]);

response = String.format("You desire %s\n", possibleValues);
JOptionPane.showMessageDialog(null, response);

JOptionPane消息窗口的简单示例,其中包含来自URL的自定义图标:

public void foo() throws MalformedURLException
{

    ImageIcon failIcon = new ImageIcon(new URL("https://cdn0.iconfinder" +
            ".com/data/icons/star-wars/512/darth_vader-32.png"));
    ImageIcon okIcon = new ImageIcon(new URL("http://www.fimfiction-static" +
            ".net/images/avatars/98207_32.jpg?1373627869"));
    JOptionPane.showMessageDialog(null, "Parameters are incorrect.", "Derp",
            JOptionPane.ERROR_MESSAGE, failIcon);
    JOptionPane.showMessageDialog(null, "Parameters are correct.", "Rejoice",
            JOptionPane.PLAIN_MESSAGE, okIcon );
祝你好运!