With custom icon
It’s important to note that you can also customize the icon that is displayed when using a JOptionPane showMessageDialog. In the following example, I specify that I want to display my own PNG image as an icon on the dialog by creating an ImageIcon as an additional argument to the showMessageDialog method:
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class ShowMessageDialogExample1
{
public static void main(String[] args)
{
// create our jframe
JFrame frame = new JFrame("JOptionPane showMessageDialog example");
// show a joptionpane dialog using showMessageDialog
JOptionPane.showMessageDialog(frame,
"Your RSS feed has been published",
"RSS Feed Published",
JOptionPane.INFORMATION_MESSAGE,
new ImageIcon(ShowMessageDialogExample1.class.getResource("Feeds_Green_32x32.png")));
System.exit(0);
}
}
This results in the following dialog:
(As a brief aside, it always amazes me how much different an icon makes to a dialog. Write text all you want, but one change to an icon produces extremely different feelings for text that is otherwise the same.)
Real world code: JOptionPane in addActionListener
In a more real-world use of the JOptionPane showMessageDialog method, you’ll typically display a message dialog when a GUI event is triggered. In Java, you’ll typically add an ActionListener to a GUI component (like a JButton), and then define your message dialog within the actionPerformed method of that ActionListener. An example of this is shown in the following JOptionPane example:
printButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
JOptionPane.showMessageDialog((Component)event.getSource(),
"Your message goes here",
"Title goes here",
JOptionPane.INFORMATION_MESSAGE);
}
});
This is pretty typical of how a JOptionPane is shown when a GUI event is triggered.
Three showMessageDialog method signatures
For your reference, it may help to know that as of Java 6, the showMessageDialog has three different method signatures. The first showMessageDialog syntax looks like this:
showMessageDialog(Component parentComponent, Object message)
The second JOptionPane showMessageDialog syntax looks like this:
showMessageDialog(Component parentComponent, Object message, String title, int messageType)
And the third JOptionPane showMessageDialog signature looks like this:
showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon)
You can add components as well
As a final (and very important) note, you may have noticed that those JOptionPane showMessageDialog signatures include this subtle component:
Object message
Many people don’t know it, but your message can be many different things, they don’t have to be just messages of the Java String type. You can take advantage of this by showing Java components in your message dialogs, and I’ll demonstrate that in future JOptionPane showMessageDialog examples.

