Button: make button square if button text is "..." or a single character

This commit is contained in:
Karl Tauber
2019-11-28 10:55:10 +01:00
parent 2197808631
commit feb8d0591e
4 changed files with 46 additions and 6 deletions

View File

@@ -10,6 +10,7 @@ FlatLaf Change Log
check whether the current look and feel is FlatLaf. check whether the current look and feel is FlatLaf.
- Fixed selection background of checkbox in table cell. - Fixed selection background of checkbox in table cell.
- Fixed jittery submenu rendering on Mac. (issue #10) - Fixed jittery submenu rendering on Mac. (issue #10)
- Button: Make button square if button text is "..." or a single character.
- ComboBox: Fixed issues with NetBeans `org.openide.awt.ColorComboBox` - ComboBox: Fixed issues with NetBeans `org.openide.awt.ColorComboBox`
component. component.
- Hex color values in `.properties` files now must start with a `#` character. - Hex color values in `.properties` files now must start with a `#` character.

View File

@@ -163,10 +163,13 @@ public class FlatButtonUI
} }
static boolean isIconOnlyButton( Component c ) { static boolean isIconOnlyButton( Component c ) {
String text; if( !(c instanceof JButton) )
return c instanceof JButton && return false;
((JButton)c).getIcon() != null &&
((text = ((JButton)c).getText()) == null || text.isEmpty()); Icon icon = ((JButton)c).getIcon();
String text = ((JButton)c).getText();
return (icon != null && (text == null || text.isEmpty())) ||
(icon == null && text != null && ("...".equals( text ) || text.length() == 1));
} }
static boolean isHelpButton( Component c ) { static boolean isHelpButton( Component c ) {
@@ -295,8 +298,11 @@ public class FlatButtonUI
Dimension prefSize = super.getPreferredSize( c ); Dimension prefSize = super.getPreferredSize( c );
// apply minimum width, if not in toolbar and not a icon-only button // make button square if it is a icon-only button
if( !isToolBarButton( c ) && !isIconOnlyButton( c ) ) // or apply minimum width, if not in toolbar and not a icon-only button
if( isIconOnlyButton( c ) )
prefSize.width = Math.max( prefSize.width, prefSize.height );
else if( !isToolBarButton( c ) )
prefSize.width = Math.max( prefSize.width, scale( minimumWidth + (focusWidth * 2) ) ); prefSize.width = Math.max( prefSize.width, scale( minimumWidth + (focusWidth * 2) ) );
return prefSize; return prefSize;

View File

@@ -58,6 +58,9 @@ public class FlatComponentsTest
JButton button3 = new JButton(); JButton button3 = new JButton();
JButton button12 = new JButton(); JButton button12 = new JButton();
JButton button13 = new JButton(); JButton button13 = new JButton();
JButton button14 = new JButton();
JButton button15 = new JButton();
JButton button16 = new JButton();
JLabel toggleButtonLabel = new JLabel(); JLabel toggleButtonLabel = new JLabel();
JToggleButton toggleButton1 = new JToggleButton(); JToggleButton toggleButton1 = new JToggleButton();
JToggleButton toggleButton2 = new JToggleButton(); JToggleButton toggleButton2 = new JToggleButton();
@@ -263,6 +266,18 @@ public class FlatComponentsTest
button13.setIcon(UIManager.getIcon("Tree.closedIcon")); button13.setIcon(UIManager.getIcon("Tree.closedIcon"));
add(button13, "cell 5 1"); add(button13, "cell 5 1");
//---- button14 ----
button14.setText("...");
add(button14, "cell 5 1");
//---- button15 ----
button15.setText("\u2026");
add(button15, "cell 5 1");
//---- button16 ----
button16.setText("#");
add(button16, "cell 5 1");
//---- toggleButtonLabel ---- //---- toggleButtonLabel ----
toggleButtonLabel.setText("JToggleButton:"); toggleButtonLabel.setText("JToggleButton:");
add(toggleButtonLabel, "cell 0 2"); add(toggleButtonLabel, "cell 0 2");

View File

@@ -85,6 +85,24 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 1" "value": "cell 5 1"
} ) } )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button14"
"text": "..."
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 1"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button15"
"text": "…"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 1"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button16"
"text": "#"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 1"
} )
add( new FormComponent( "javax.swing.JLabel" ) { add( new FormComponent( "javax.swing.JLabel" ) {
name: "toggleButtonLabel" name: "toggleButtonLabel"
"text": "JToggleButton:" "text": "JToggleButton:"