diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java index 45471eb8..552690ce 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java @@ -16,11 +16,16 @@ package com.formdev.flatlaf.ui; +import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; +import java.awt.Rectangle; +import javax.swing.AbstractButton; import javax.swing.JComponent; +import javax.swing.UIManager; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.basic.BasicButtonUI; +import sun.swing.SwingUtilities2; /** * Provides the Flat LaF UI delegate for {@link javax.swing.JButton}. @@ -62,4 +67,20 @@ public class FlatButtonUI paint( g, c ); } + + @Override + protected void paintText( Graphics g, JComponent c, Rectangle textRect, String text ) { + AbstractButton b = (AbstractButton) c; + if( b.getModel().isEnabled() ) + super.paintText( g, c, textRect, text ); + else { + // paint disabled text + FontMetrics fm = SwingUtilities2.getFontMetrics( c, g ); + int mnemonicIndex = b.getDisplayedMnemonicIndex(); + g.setColor( UIManager.getColor( "Button.disabledText" ) ); + SwingUtilities2.drawStringUnderlineCharAt( c, g, text, mnemonicIndex, + textRect.x + getTextShiftOffset(), + textRect.y + fm.getAscent() + getTextShiftOffset() ); + } + } } diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties index cadeece0..d68d7bd4 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties @@ -45,6 +45,7 @@ window=@background #---- Button ---- Button.background=4c5052 +Button.disabledText=777777 Button.startBorderColor=5e6060 Button.endBorderColor=5e6060 diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties index 145dfcaa..065f1a0f 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties @@ -45,6 +45,7 @@ window=@background #---- Button ---- Button.background=ffffff +Button.disabledText=999999 Button.startBorderColor=bfbfbf Button.endBorderColor=b3b3b3 diff --git a/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties b/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties index 35ab5c30..ec0f2e5b 100644 --- a/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties +++ b/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties @@ -23,6 +23,7 @@ #---- Button ---- Button.background=ffffff +Button.disabledText=000088 Button.startBorderColor=ff0000 Button.endBorderColor=0000ff