Substance API

View all API methods.

View all client properties.


API method

public static void setToUseConstantThemesOnDialogs(
      boolean toUseConstantThemesOnDialogs)

Description

Sets the new setting for the icons of the JOptionPanes created with predefined message types

Parameters:

  • toUseConstantThemesOnDialogs - if true, the JOptionPanes created with predefined message types should use constant themes for the icons

See also


Sample code

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

import org.pushingpixels.substance.api.SubstanceLookAndFeel;
import org.pushingpixels.substance.api.skin.NebulaSkin;

/**
 * Test application that shows the use of the
 {@link SubstanceLookAndFeel#setToUseConstantThemesOnDialogs(boolean)} API.
 
 @author Kirill Grouchnikov
 @see SubstanceLookAndFeel#setToUseConstantThemesOnDialogs(boolean)
 */
public class SetUseConstantThemesOnDialogs extends JFrame {
  /**
   * Creates the main frame for <code>this</code> sample.
   */
  public SetUseConstantThemesOnDialogs() {
    super("Use constant themes on dialogs");

    this.setLayout(new BorderLayout());

    ClassLoader cl = Thread.currentThread().getContextClassLoader();
    String packageName = SetUseConstantThemesOnDialogs.class.getPackage()
        .getName();

    JPanel buttonPanel = new JPanel(new FlowLayout());
    JButton bopi = new JButton("Info"new ImageIcon(cl
        .getResource(packageName.replace('.''/')
            "/dialog-information.png")));
    bopi.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(
            SetUseConstantThemesOnDialogs.this,
            "Sample info message""Sample title",
            JOptionPane.INFORMATION_MESSAGE);
      }
    });
    buttonPanel.add(bopi);

    JButton bope = new JButton("Show"new ImageIcon(cl
        .getResource(packageName.replace('.''/')
            "/dialog-error.png")));
    bope.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(
            SetUseConstantThemesOnDialogs.this,
            "Sample error message""Sample title",
            JOptionPane.ERROR_MESSAGE);
      }
    });
    buttonPanel.add(bope);

    JButton bopw = new JButton("Show"new ImageIcon(cl
        .getResource(packageName.replace('.''/')
            "/dialog-warning.png")));
    bopw.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(
            SetUseConstantThemesOnDialogs.this,
            "Sample warning message""Sample title",
            JOptionPane.WARNING_MESSAGE);
      }
    });
    buttonPanel.add(bopw);

    JButton bopq = new JButton("Show"new ImageIcon(cl
        .getResource(packageName.replace('.''/')
            "/help-browser.png")));
    bopq.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(
            SetUseConstantThemesOnDialogs.this,
            "Sample question message""Sample title",
            JOptionPane.QUESTION_MESSAGE);
      }
    });
    buttonPanel.add(bopq);

    this.add(buttonPanel, BorderLayout.CENTER);

    JPanel controls = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    final JCheckBox useConstantThemesOnDialogs = new JCheckBox(
        "Use constant themes on dialogs");
    useConstantThemesOnDialogs.setSelected(SubstanceLookAndFeel
        .isToUseConstantThemesOnDialogs());
    useConstantThemesOnDialogs.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        SwingUtilities.invokeLater(new Runnable() {
          public void run() {
            SubstanceLookAndFeel
                .setToUseConstantThemesOnDialogs(useConstantThemesOnDialogs
                    .isSelected());
          }
        });
      }
    });
    controls.add(useConstantThemesOnDialogs);
    this.add(controls, BorderLayout.SOUTH);

    this.setSize(400200);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  /**
   * The main method for <code>this</code> sample. The arguments are ignored.
   
   @param args
   *            Ignored.
   */
  public static void main(String[] args) {
    JDialog.setDefaultLookAndFeelDecorated(true);
    JFrame.setDefaultLookAndFeelDecorated(true);
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        SubstanceLookAndFeel.setSkin(new NebulaSkin());
        new SetUseConstantThemesOnDialogs().setVisible(true);
      }
    });
  }
}

The screenshot below shows the initial frame that allows opening option panes with different predefined messages.

By default, the option panes icons use constant colors. Here is an option pane with JOptionPane.INFORMATION_MESSAGE message type (note that the icon is not colorized with the current theme):

Here is an option pane with JOptionPane.ERROR_MESSAGE message type (note that the icon is not colorized with the current theme):

After calling this API with false value, the option pane icons are colorized with the colors of the current theme. Here is the option pane with JOptionPane.INFORMATION_MESSAGE message type (note the colorized icon):

Here is the option pane with JOptionPane.ERROR_MESSAGE message type (note the colorized icon):