JOptionPane.showConfirmDialog可以自己添加图片吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JOptionPane.showConfirmDialog可以自己添加图片吗?相关的知识,希望对你有一定的参考价值。

比如说左边那个叹号或者问号的图标,可以自己换成别的图标吗?

可以自定义图片的!

Icon img = new ImageIcon(图片绝对路径);
JOptionPane.showConfirmDialog(null,
"是否关闭窗口?", "是否关闭窗口?", JOptionPane.YES_NO_OPTION, 0, img);

showInternalConfirmDialogpublic static int showInternalConfirmDialog(Component parentComponent,
Object message,
String title,
int optionType,
int messageType,
Icon icon)调出一个带有指定图标的内部对话框面板,其中的选项数由 optionType 参数确定。messageType 参数主要用于提供来自外观的默认图标。

参数:parentComponent - 确定在其中显示对话框的 Frame;如果为 null 或者 parentComponent 不具有 Frame,则使用默认的 Framemessage - 要在对话框中显示的对象;Component 对象呈现为 Component;String 对象呈现为字符串;其他对象将通过 toString 方法被转换为 Stringtitle - 对话框的标题字符串

optionType - 指定可用于对话框的选项的整数:YES_NO_OPTION 或 YES_NO_CANCEL_OPTION。
messageType - 指定消息种类的整数,主要用于确定来自可插入外观的图标:ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE 或 PLAIN_MESSAGEicon - 要在对话框中显示的图标

API上写的很清楚了,建议这种现实问题多查查API!
有问题再追问,good luck!~
参考技术A import javax.swing.*;

public class MessageDialog

public static void main(String[] args)


Icon icon = new ImageIcon("E:\\elipse_workspace\\Test1\\a.jpg");
JOptionPane.showMessageDialog(null, "哈哈", "测试", JOptionPane.CLOSED_OPTION, icon);



//地址下面的图片自己加!

JOptionPane 是或否窗口

【中文标题】JOptionPane 是或否窗口【英文标题】:JOptionPane Yes or No window 【发布时间】:2012-01-13 21:00:45 【问题描述】:

我正在尝试使用“是”或“否”按钮创建消息。然后会出现一个窗口,其中包含特定消息,具体取决于用户单击是还是否。

这是我的代码:

public class test
    public static void main(String[] args)

        //default icon, custom title
        int n = JOptionPane.showConfirmDialog(
            null,
            "Would you like green eggs and ham?",
            "An Inane Question",
            JOptionPane.YES_NO_OPTION);

        if(true)
            JOptionPane.showMessageDialog(null, "HELLO");
        
        else 
            JOptionPane.showMessageDialog(null, "GOODBYE");
        

        System.exit(0);
    

现在无论您按是还是否,它都会打印 HELLO。当用户选择否时,我如何让它显示 GOODBYE?

【问题讨论】:

你有死代码。你的 else 部分永远不会执行。 10 次赞成和 7 次最喜欢的问题...我想知道为什么 【参考方案1】:

"if(true)" 将永远为真,并且永远不会出现在 else 中。如果你想让它正常工作,你必须这样做:

int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION) 
    JOptionPane.showMessageDialog(null, "HELLO");
 else 
    JOptionPane.showMessageDialog(null, "GOODBYE");
    System.exit(0);

【讨论】:

@JoshKing 如果它对你有用,那么你应该投票并接受这个答案。【参考方案2】:

您总是在检查一个真实的条件,因此您的消息将始终显示。

您应该将 if (true) 语句替换为 if ( n == JOptionPane.YES_OPTION)

当 showXxxDialog 方法之一返回一个整数时,可能的 值是:

YES_OPTION NO_OPTION CANCEL_OPTION OK_OPTION CLOSED_OPTION

来自here

【讨论】:

+1 用于链接到 JavaDocs,但我将链接从 1.4.2 更新到 1.7,并在字段摘要中添加了一个锚点。【参考方案3】:

你可以用这个来修复它:

if(n == JOptionPane.YES_OPTION)

    JOptionPane.showMessageDialog(null, "HELLO");

else

    JOptionPane.showMessageDialog(null, "GOODBYE");

【讨论】:

【参考方案4】:

是和否消息的代码

      int n = JOptionPane.showConfirmDialog(  
                null,
                "sample question?!" ,
                "",
                JOptionPane.YES_NO_OPTION);

      if(n == JOptionPane.YES_OPTION)
      
          JOptionPane.showMessageDialog(null, "Opening...");
      
      else
      
          JOptionPane.showMessageDialog(null, "Goodbye");
          System.exit(0);

【讨论】:

【参考方案5】:

你可以更简单地做到这一点:

int test = JOptionPane.showConfirmDialog(null, "Would you like green eggs and ham?", "An insane question!");
switch(test) 
    case 0: JOptionPane.showMessageDialog(null, "HELLO!"); //Yes option
    case 1: JOptionPane.showMessageDialog(null, "GOODBYE!"); //No option
    case 2: JOptionPane.showMessageDialog(null, "GOODBYE!"); //Cancel option

【讨论】:

你错过了 switch 中的 break 语句。【参考方案6】:

你正在写if(true),所以它总是会显示“Hello”消息。

您应该根据返回的n 的值做出决定。

【讨论】:

是的,但是我该如何编码呢?我可以将输出分配给一个变量,但我不知道该怎么做 @JoshKing 我不记得确切的值。尝试在控制台上打印 n 的值,并检查按下是时给出的值以及按下否时给出的值。然后使用 if(n == ?) else ".. 然后使用 if(n == ?)" 不要使用“魔法值”。定义的常量将在明年 JRE 下工作..【参考方案7】:

为了更好地了解它的工作原理!

int n = JOptionPane.showConfirmDialog(null, "Yes No Cancel", "YesNoCancel", JOptionPane.YES_NO_CANCEL_OPTION);
    if(n == 0)
        
        JOptionPane.showConfirmDialog(null, "You pressed YES\n"+"Pressed value is = "+n);
        
    else if(n == 1)
        
        JOptionPane.showConfirmDialog(null, "You pressed NO\n"+"Pressed value is = "+n);
        
    else if (n == 2)
        
        JOptionPane.showConfirmDialog(null, "You pressed CANCEL\n"+"Pressed value is = "+n);
        
    else if (n == -1)
        
        JOptionPane.showConfirmDialog(null, "You pressed X\n"+"Pressed value is = "+n);
        

int n = JOptionPane.showConfirmDialog(null, "Yes No Cancel", "YesNoCancel", JOptionPane.YES_NO_CANCEL_OPTION);
    switch (n) 
        case 0:
            JOptionPane.showConfirmDialog(null, "You pressed YES\n"+"Pressed value is = "+n);
            break;
        case 1:
            JOptionPane.showConfirmDialog(null, "You pressed NO\n"+"Pressed value is = "+n);
            break;
        case 2:
            JOptionPane.showConfirmDialog(null, "You pressed CANCEL\n"+"Pressed value is = "+n);
            break;
        case -1:
            JOptionPane.showConfirmDialog(null, "You pressed X\n"+"Pressed value is = "+n);
            break;
        default:
            break;
    

【讨论】:

【参考方案8】:

类似的东西......

   //default icon, custom title
int n = JOptionPane.showConfirmDialog(null,"Would you like green eggs and ham?","An Inane Question",JOptionPane.YES_NO_OPTION);

String result = "?";
switch (n) 
case JOptionPane.YES_OPTION:
  result = "YES";
  break;
case JOptionPane.NO_OPTION:
  result = "NO";
  break;
default:
  ;

System.out.println("Replace? " + result);

你可能还想看看DialogDemo

【讨论】:

你写了case JOptionPane.NO_OPTION: 2次。

以上是关于JOptionPane.showConfirmDialog可以自己添加图片吗?的主要内容,如果未能解决你的问题,请参考以下文章