有没有办法改变JOptionPane布局,比如顶部的颜色和左上角的图像?

时间:2012-05-07 21:31:10

标签: java swing joptionpane

我很好奇,我想知道是否有办法让JOptionPane的顶部变成不同的颜色,比如红色或橙色。另外我想知道如何更改JOptionPane左侧的图像。我猜这是不可能的,因为它已经是一个从java使用的方法。但我不是专家。

2 个答案:

答案 0 :(得分:7)

这里有三个选项:

  1. 使用相应的消息类型使用其中一个预定义图标:
    JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.", "Inane error", JOptionPane.ERROR_MESSAGE);

  2. 使用自定义图标:
    JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.", "Inane custom dialog", JOptionPane.INFORMATION_MESSAGE, icon);

  3. 使用外观&感觉在您的应用程序中有一致的图标:How to Set the Look and Feel

  4. 有关对话框的更多信息,请查看this page of the Java Tutorial

答案 1 :(得分:6)

您可以将自己的ImageIcon添加到JOptionPane - 检查API,然后尝试使用Icon字段调用方法,传入您自己的ImageIcon以查看其工作原理。您还可以创建一个复杂的JPanel,一个完整的包含GUI的JPanel,并使其成为JOptionPane的基础,只需将其作为JOptionPane.showXXX(...)方法的Object参数(通常是第二个参数)传递即可。 / p>

另一种选择是创建和使用自己的模态JDialog。

工作代码:

import java.awt.Color;
import javax.swing.*;

public class JOptionPaneExample
{
    private void createAndDisplayGUI()
    {
        JOptionPane.showMessageDialog(null, getOptionPanel(), "Modified JOptionPane : ", JOptionPane.PLAIN_MESSAGE);
    }

    public static void main(String... args)
    {   
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                new JOptionPaneExample().createAndDisplayGUI();
            }
        });
    }

    private JPanel getOptionPanel()
    {
        JPanel panel = new JPanel();
        panel.setOpaque(true);
        panel.setBackground(Color.RED);
        try
        {
            java.net.URL url = new java.net.URL("http://gagandeepbali.uk.to/gaganisonline/images/swing/geek.gif");
            ImageIcon image = new ImageIcon(url);
            JLabel label = new JLabel("I am one MODIFIED JOPTIONPANE's LABEL.", image, JLabel.RIGHT);
            panel.add(label);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return panel;
    }
}