ToggleButton: make toggle button square if it has an icon but no text or text is "..." or a single character

This commit is contained in:
Karl Tauber
2020-02-13 14:51:36 +01:00
parent 87dd5a9ebb
commit e5761128f9
5 changed files with 120 additions and 32 deletions

View File

@@ -23,7 +23,7 @@ import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Paint;
import javax.swing.JButton;
import javax.swing.AbstractButton;
import javax.swing.UIManager;
import javax.swing.plaf.UIResource;
@@ -98,7 +98,7 @@ public class FlatButtonBorder
insets = super.getBorderInsets( c, insets );
// use smaller left and right insets for icon-only buttons (so that they are square)
if( FlatButtonUI.isIconOnlyButton( c ) && ((JButton)c).getMargin() instanceof UIResource )
if( FlatButtonUI.isIconOnlyButton( c ) && ((AbstractButton)c).getMargin() instanceof UIResource )
insets.left = insets.right = Math.min( insets.top, insets.bottom );
return insets;

View File

@@ -34,6 +34,7 @@ import javax.swing.ButtonModel;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;
import javax.swing.LookAndFeel;
import javax.swing.UIManager;
@@ -222,11 +223,11 @@ public class FlatButtonUI
}
static boolean isIconOnlyButton( Component c ) {
if( !(c instanceof JButton) )
if( !(c instanceof JButton) && !(c instanceof JToggleButton) )
return false;
Icon icon = ((JButton)c).getIcon();
String text = ((JButton)c).getText();
Icon icon = ((AbstractButton)c).getIcon();
String text = ((AbstractButton)c).getText();
return (icon != null && (text == null || text.isEmpty())) ||
(icon == null && text != null && ("...".equals( text ) || text.length() == 1));
}