user1911773
user1911773

Reputation: 51

Add Image to JOptionPane

I'm wondering How To Add Image To MessageDialog Box. I tried the code below and the image was nowhere to be found

else if(button == B){
String text = "blahblahblahblahblah";
    JTextArea textArea = new JTextArea(text);

textArea.setColumns(30);
textArea.setLineWrap( true );
textArea.setWrapStyleWord( true );
textArea.setSize(textArea.getPreferredSize().width, 1);
Font font = new Font("Verdana", Font.BOLD, 12);
textArea.setFont(font);
textArea.setForeground(Color.BLUE);
JOptionPane.showMessageDialog(
null, textArea, "Border States", JOptionPane.PLAIN_MESSAGE);

image2 = new ImageIcon(getClass().getResource("borderstates.jpg"));
  label2 = new JLabel(image2);
  add(label2);

Upvotes: 4

Views: 55996

Answers (3)

MadProgrammer
MadProgrammer

Reputation: 347194

JOptionPane is a very flexible API.

Your first port of call should be the Java API Docs and the Java Trails, specific How to use Dialogs

enter image description hereenter image description here

public class TestOptionPane04 {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                ImageIcon icon = new ImageIcon(TestOptionPane04.class.getResource("/earth.png"));
                JOptionPane.showMessageDialog(
                        null,
                        "Hello world",
                        "Hello", JOptionPane.INFORMATION_MESSAGE,
                        icon);
                JOptionPane.showMessageDialog(
                        null,
                        new JLabel("Hello world", icon, JLabel.LEFT),
                        "Hello", JOptionPane.INFORMATION_MESSAGE);

            }
        });
    }
}

Upvotes: 20

Mel Nicholson
Mel Nicholson

Reputation: 3225

From the javadoc on JOptionPane:

public static void showMessageDialog(Component parentComponent,
                                     Object message,
                                     String title,
                                     int messageType,
                                     Icon icon)
                          throws HeadlessException

Just make an Icon of your image and add it as a 5th parameter.

JOptionPane.showMessageDialog(null, textArea, "Border States", 
    JOptionPane.PLAIN_MESSAGE, image2);

Don't forget to define image2 before you use it (move the line up)

Upvotes: 5

Hovercraft Full Of Eels
Hovercraft Full Of Eels

Reputation: 285403

What is a MessageDialogBox? If you mean add an image to a JOptionPane, there are method overloads that accept an Icon, and so this is one way to solve this. Another is to create a JPanel or JLabel with your image and other components and then display this in the JOptionPane.

Upvotes: 5

Related Questions