From f3006467e9795692b2221048b4677ba9063b33ec Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 30 Oct 2019 15:14:23 +0100 Subject: [PATCH] TextField and TextArea: do not apply minimum width if `columns` property > 0 --- CHANGELOG.md | 6 ++++++ .../java/com/formdev/flatlaf/ui/FlatTextAreaUI.java | 11 ++++++++--- .../java/com/formdev/flatlaf/ui/FlatTextFieldUI.java | 5 +++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ad2efac..418a03f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ FlatLaf Change Log ================== +## Unreleased + +- TextField and TextArea: Do not apply minimum width if `columns` property is + greater than zero. + + ## 0.17 - CheckBox: Support painting a third state (set client property diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java index 51fcba49..7797d94f 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java @@ -21,6 +21,7 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import javax.swing.JComponent; +import javax.swing.JTextArea; import javax.swing.UIManager; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.UIResource; @@ -81,15 +82,19 @@ public class FlatTextAreaUI @Override public Dimension getPreferredSize( JComponent c ) { - return applyMinimumWidth( super.getPreferredSize( c ) ); + return applyMinimumWidth( super.getPreferredSize( c ), c ); } @Override public Dimension getMinimumSize( JComponent c ) { - return applyMinimumWidth( super.getMinimumSize( c ) ); + return applyMinimumWidth( super.getMinimumSize( c ), c ); } - private Dimension applyMinimumWidth( Dimension size ) { + private Dimension applyMinimumWidth( Dimension size, JComponent c ) { + // do not apply minimum width if JTextArea.columns is set + if( c instanceof JTextArea && ((JTextArea)c).getColumns() > 0 ) + return size; + // Assume that text area is in a scroll pane (that displays the border) // and subtract 1px border line width. // Using "(scale( 1 ) * 2)" instead of "scale( 2 )" to deal with rounding diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java index 3d5b9c53..7aca0e56 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java @@ -25,6 +25,7 @@ import java.awt.event.FocusListener; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JSpinner; +import javax.swing.JTextField; import javax.swing.LookAndFeel; import javax.swing.UIManager; import javax.swing.plaf.ComponentUI; @@ -137,6 +138,10 @@ public class FlatTextFieldUI } private Dimension applyMinimumWidth( Dimension size, JComponent c ) { + // do not apply minimum width if JTextField.columns is set + if( c instanceof JTextField && ((JTextField)c).getColumns() > 0 ) + return size; + Container parent = c.getParent(); if( parent instanceof JComboBox || parent instanceof JSpinner ||