Class ExtButtonAreaLayout

  • All Implemented Interfaces:
    java.awt.LayoutManager

    public final class ExtButtonAreaLayout
    extends javax.swing.plaf.basic.BasicOptionPaneUI.ButtonAreaLayout
    Unlike its superclass, this layout uses a minimum button width that complies with Mac and Windows UI style guides.
    Version:
    $Revision: 1.13 $
    • Field Summary

      • Fields inherited from class javax.swing.plaf.basic.BasicOptionPaneUI.ButtonAreaLayout

        centersChildren, padding, syncAllWidths
    • Constructor Summary

      Constructors 
      Constructor Description
      ExtButtonAreaLayout​(boolean syncAllWidths, int padding)
      Constructs an ExtButtonAreaLayout.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static int getMinimumButtonWidth()
      Computes and answers the minimum button width.
      void layoutContainer​(java.awt.Container container)  
      java.awt.Dimension minimumLayoutSize​(java.awt.Container c)  
      • Methods inherited from class javax.swing.plaf.basic.BasicOptionPaneUI.ButtonAreaLayout

        addLayoutComponent, getCentersChildren, getPadding, getSyncAllWidths, preferredLayoutSize, removeLayoutComponent, setCentersChildren, setPadding, setSyncAllWidths
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ExtButtonAreaLayout

        public ExtButtonAreaLayout​(boolean syncAllWidths,
                                   int padding)
        Constructs an ExtButtonAreaLayout.
        Parameters:
        syncAllWidths - true indicates that all buttons get the same size
        padding - the padding between buttons
    • Method Detail

      • layoutContainer

        public void layoutContainer​(java.awt.Container container)
        Specified by:
        layoutContainer in interface java.awt.LayoutManager
        Overrides:
        layoutContainer in class javax.swing.plaf.basic.BasicOptionPaneUI.ButtonAreaLayout
      • minimumLayoutSize

        public java.awt.Dimension minimumLayoutSize​(java.awt.Container c)
        Specified by:
        minimumLayoutSize in interface java.awt.LayoutManager
        Overrides:
        minimumLayoutSize in class javax.swing.plaf.basic.BasicOptionPaneUI.ButtonAreaLayout
      • getMinimumButtonWidth

        private static int getMinimumButtonWidth()
        Computes and answers the minimum button width. The MS UX guide recommends a minimum width of 50 Dialog units (DLU).

        This current implementation assumes an 8pt Tahoma and honors resolutions of 96dpi and 120dpi. This leads to a good approximation of the 50dlu for the vast majority of today's target systems. And it sure is an improvement over the superclass' value of 0.

        A better implementation would use a conversion from dlu to pixel for the given buttons (that may have different font render contexts if located in different graphics environments in a multi-screen context). The JGoodies Forms provides such a converter and offers a better button layout by means of the ButtonBarBuilder2 class.

        Returns:
        the minimum button width