Laf-Widget client properties

View all client properties.


Client property name

LafWidget.TABBED_PANE_PREVIEW_PAINTER

Description

Client property name for specifying the preview painter for tabbed pane. This property can be set either on a single tabbed pane or globally on UIManager. The value in both cases should be an instance of TabPreviewPainter. Default implementation of this DefaultTabPreviewPainter. Tabbed panes that have associated preview painters (set either on tabbed pane itself or globally on UIManager, have two widgets installed:

  • Tab overview dialog from TabOverviewDialogWidget.
  • Tab hover preview from TabHoverPreviewWidget.


See also


Sample code

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

import org.jvnet.lafwidget.LafWidget;
import org.jvnet.lafwidget.tabbed.DefaultTabPreviewPainter;
import org.jvnet.substance.SubstanceLookAndFeel;

import test.Check;

/**
 * Test application that shows the use of the
 {@link LafWidget#TABBED_PANE_PREVIEW_PAINTER} client property.
 
 @author Kirill Grouchnikov
 @see LafWidget#TABBED_PANE_PREVIEW_PAINTER
 */
public class TabbedPanePreviewPainter extends JFrame {
  /**
   * Creates the main frame for <code>this</code> sample.
   */
  public TabbedPanePreviewPainter() {
    super("Tabbed pane preview painter");

    this.setLayout(new BorderLayout());

    final JTabbedPane jtp = new JTabbedPane();
    jtp.addTab("First", Check.getIcon("flag_mexico")new JPanel() {
      @Override
      public Color getBackground() {
        return new Color(255200200);
      }
    });
    jtp.addTab("Second", Check.getIcon("flag_sweden")new JPanel() {
      @Override
      public Color getBackground() {
        return new Color(200255200);
      }
    });
    jtp.addTab("Third", Check.getIcon("flag_hong_kong")new JPanel() {
      @Override
      public Color getBackground() {
        return new Color(200200255);
      }
    });

    this.add(jtp, BorderLayout.CENTER);

    JPanel controls = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    final JCheckBox hasPreview = new JCheckBox("Has preview");
    hasPreview.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        jtp
            .putClientProperty(
                LafWidget.TABBED_PANE_PREVIEW_PAINTER,
                hasPreview.isSelected() new DefaultTabPreviewPainter()
                    null);
        jtp.revalidate();
        jtp.repaint();
      }
    });

    controls.add(hasPreview);
    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.
   @throws Exception
   *             If some exception occured. Note that there is no special
   *             treatment of exception conditions in <code>this</code>
   *             sample code.
   */
  public static void main(String[] argsthrows Exception {
    UIManager.setLookAndFeel(new SubstanceLookAndFeel());
    JFrame.setDefaultLookAndFeelDecorated(true);
    JDialog.setDefaultLookAndFeelDecorated(true);
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        new TabbedPanePreviewPainter().setVisible(true);
      }
    });
  }
}

The screenshot below shows a tabbed pane when this property is not installed:

After installing this property on the tabbed pane, it has an overview button in the top left corner:

Clicking on the preview button brings up the overview dialog. The mouse is over the preview of the third tab that shows the relevant tooltip: