从 JOptionPane 中删除图标

Posted

技术标签:

【中文标题】从 JOptionPane 中删除图标【英文标题】:Remove icon from JOptionPane 【发布时间】:2013-06-03 15:01:35 【问题描述】:

如何从JOptionPane 中删除图标?

ImageIcon icon = new ImageIcon(image);
JLabel label = new JLabel(icon);
int result = JOptionPane.showConfirmDialog((Component) null, label, "ScreenPreview", JOptionPane.OK_CANCEL_OPTION);

【问题讨论】:

JOptionPane.PLAIN_MESSAGE ? ***.com/a/10489515/2381006 @mishik: JOptionPane.PLAIN_MESSAGE 不允许我确定取消按钮。 【参考方案1】:

您可以通过直接指定消息的外观来做到这一点。

您的代码将采用默认代码,而此代码将使用缺少图标的“PLAIN_MESSAGE”样式。组件的行为保持不变。

JOptionPane.showConfirmDialog(null, label, "ScreenPreview", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);

更多信息:http://docs.oracle.com/javase/6/docs/api/javax/swing/JOptionPane.html

【讨论】:

【参考方案2】:

使用下面的透明图标(与黑色的“启动图像”相反)相当容易。尽管请注意,虽然选项窗格在显示方式方面提供了一些“摆动空间”,但如果更改一些内容,使用JDialog 会很快变得更容易。

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;

class IconFree 

    public static void main(String[] args) 
        Runnable r = new Runnable() 

            @Override
            public void run() 
                // A transparent image is invisible by default.
                Image image = new BufferedImage(
                        1, 1, BufferedImage.TYPE_INT_ARGB);
                JPanel gui = new JPanel(new BorderLayout());
                // ..while an RGB image is black by default.
                JLabel clouds = new JLabel(new ImageIcon(new BufferedImage(
                        250, 100, BufferedImage.TYPE_INT_RGB)));
                gui.add(clouds);

                JOptionPane.showConfirmDialog(null, gui, "Title",
                        JOptionPane.OK_CANCEL_OPTION,
                        JOptionPane.QUESTION_MESSAGE,
                        new ImageIcon(image));
            
        ;
        // Swing GUIs should be created and updated on the EDT
        // http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
        SwingUtilities.invokeLater(r);
    

【讨论】:

【参考方案3】:

写 -1 代替 JOptionPane.QUESTION_MESSAGE

【讨论】:

为什么是-1?那是什么意思?为什么不使用JOptionPane 常量之一? 应该这样看: JOptionPane.showMessageDialog(parent, message, status, -1 );所以 -1 将隐藏与 showMessageDialog 一起使用的图标。

以上是关于从 JOptionPane 中删除图标的主要内容,如果未能解决你的问题,请参考以下文章

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

java后台提示信息弹出框

JOptionPane.showConfirmDialog 字体问题,高分求解!!!

从 android 通知中删除辅助图标

保留图标,从“后退”按钮中删除文本

从保留图标的后退按钮中删除文本