mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-11 06:27:13 -06:00
TextField, TextArea, TextPane and EditorPane: apply minimum width of 64px
This commit is contained in:
@@ -16,19 +16,54 @@
|
|||||||
|
|
||||||
package com.formdev.flatlaf.ui;
|
package com.formdev.flatlaf.ui;
|
||||||
|
|
||||||
|
import static com.formdev.flatlaf.util.UIScale.scale;
|
||||||
|
import java.awt.Dimension;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.UIManager;
|
||||||
import javax.swing.plaf.ComponentUI;
|
import javax.swing.plaf.ComponentUI;
|
||||||
import javax.swing.plaf.basic.BasicEditorPaneUI;
|
import javax.swing.plaf.basic.BasicEditorPaneUI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides the Flat LaF UI delegate for {@link javax.swing.JEditorPane}.
|
* Provides the Flat LaF UI delegate for {@link javax.swing.JEditorPane}.
|
||||||
*
|
*
|
||||||
|
* TODO document used UI defaults of superclass
|
||||||
|
*
|
||||||
|
* @uiDefault Component.minimumWidth int
|
||||||
|
*
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
*/
|
*/
|
||||||
public class FlatEditorPaneUI
|
public class FlatEditorPaneUI
|
||||||
extends BasicEditorPaneUI
|
extends BasicEditorPaneUI
|
||||||
{
|
{
|
||||||
|
protected int minimumWidth;
|
||||||
|
|
||||||
public static ComponentUI createUI( JComponent c ) {
|
public static ComponentUI createUI( JComponent c ) {
|
||||||
return new FlatEditorPaneUI();
|
return new FlatEditorPaneUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void installDefaults() {
|
||||||
|
super.installDefaults();
|
||||||
|
|
||||||
|
minimumWidth = UIManager.getInt( "Component.minimumWidth" );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dimension getPreferredSize( JComponent c ) {
|
||||||
|
return applyMinimumWidth( super.getPreferredSize( c ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dimension getMinimumSize( JComponent c ) {
|
||||||
|
return applyMinimumWidth( super.getMinimumSize( c ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dimension applyMinimumWidth( Dimension 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
|
||||||
|
// issues. E.g. at scale factor 1.5 the first returns 4, but the second 3.
|
||||||
|
size.width = Math.max( size.width, scale( minimumWidth ) - (scale( 1 ) * 2) );
|
||||||
|
return size;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.formdev.flatlaf.ui;
|
package com.formdev.flatlaf.ui;
|
||||||
|
|
||||||
import static com.formdev.flatlaf.util.UIScale.scale;
|
import static com.formdev.flatlaf.util.UIScale.scale;
|
||||||
|
import java.awt.Dimension;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.event.FocusEvent;
|
import java.awt.event.FocusEvent;
|
||||||
@@ -33,6 +34,7 @@ import javax.swing.text.JTextComponent;
|
|||||||
* TODO document used UI defaults of superclass
|
* TODO document used UI defaults of superclass
|
||||||
*
|
*
|
||||||
* @uiDefault Component.focusWidth int
|
* @uiDefault Component.focusWidth int
|
||||||
|
* @uiDefault Component.minimumWidth int
|
||||||
*
|
*
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
*/
|
*/
|
||||||
@@ -40,6 +42,7 @@ public class FlatPasswordFieldUI
|
|||||||
extends BasicPasswordFieldUI
|
extends BasicPasswordFieldUI
|
||||||
{
|
{
|
||||||
protected int focusWidth;
|
protected int focusWidth;
|
||||||
|
protected int minimumWidth;
|
||||||
|
|
||||||
private Handler handler;
|
private Handler handler;
|
||||||
|
|
||||||
@@ -52,6 +55,7 @@ public class FlatPasswordFieldUI
|
|||||||
super.installDefaults();
|
super.installDefaults();
|
||||||
|
|
||||||
focusWidth = UIManager.getInt( "Component.focusWidth" );
|
focusWidth = UIManager.getInt( "Component.focusWidth" );
|
||||||
|
minimumWidth = UIManager.getInt( "Component.minimumWidth" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -95,6 +99,21 @@ public class FlatPasswordFieldUI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dimension getPreferredSize( JComponent c ) {
|
||||||
|
return applyMinimumWidth( super.getPreferredSize( c ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dimension getMinimumSize( JComponent c ) {
|
||||||
|
return applyMinimumWidth( super.getMinimumSize( c ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dimension applyMinimumWidth( Dimension size ) {
|
||||||
|
size.width = Math.max( size.width, scale( minimumWidth + (focusWidth * 2) ) );
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
//---- class Handler ------------------------------------------------------
|
//---- class Handler ------------------------------------------------------
|
||||||
|
|
||||||
private class Handler
|
private class Handler
|
||||||
|
|||||||
@@ -16,7 +16,9 @@
|
|||||||
|
|
||||||
package com.formdev.flatlaf.ui;
|
package com.formdev.flatlaf.ui;
|
||||||
|
|
||||||
|
import static com.formdev.flatlaf.util.UIScale.scale;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
@@ -30,14 +32,16 @@ import javax.swing.text.JTextComponent;
|
|||||||
*
|
*
|
||||||
* TODO document used UI defaults of superclass
|
* TODO document used UI defaults of superclass
|
||||||
*
|
*
|
||||||
* @uiDefault ComboBox.disabledBackground Color
|
* @uiDefault Component.minimumWidth int
|
||||||
* @uiDefault ComboBox.inactiveBackground Color
|
* @uiDefault TextArea.disabledBackground Color
|
||||||
|
* @uiDefault TextArea.inactiveBackground Color
|
||||||
*
|
*
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
*/
|
*/
|
||||||
public class FlatTextAreaUI
|
public class FlatTextAreaUI
|
||||||
extends BasicTextAreaUI
|
extends BasicTextAreaUI
|
||||||
{
|
{
|
||||||
|
protected int minimumWidth;
|
||||||
protected Color disabledBackground;
|
protected Color disabledBackground;
|
||||||
protected Color inactiveBackground;
|
protected Color inactiveBackground;
|
||||||
|
|
||||||
@@ -49,6 +53,7 @@ public class FlatTextAreaUI
|
|||||||
protected void installDefaults() {
|
protected void installDefaults() {
|
||||||
super.installDefaults();
|
super.installDefaults();
|
||||||
|
|
||||||
|
minimumWidth = UIManager.getInt( "Component.minimumWidth" );
|
||||||
disabledBackground = UIManager.getColor( "TextArea.disabledBackground" );
|
disabledBackground = UIManager.getColor( "TextArea.disabledBackground" );
|
||||||
inactiveBackground = UIManager.getColor( "TextArea.inactiveBackground" );
|
inactiveBackground = UIManager.getColor( "TextArea.inactiveBackground" );
|
||||||
}
|
}
|
||||||
@@ -73,4 +78,23 @@ public class FlatTextAreaUI
|
|||||||
: (!c.isEditable() ? inactiveBackground : background)) );
|
: (!c.isEditable() ? inactiveBackground : background)) );
|
||||||
g.fillRect( 0, 0, c.getWidth(), c.getHeight() );
|
g.fillRect( 0, 0, c.getWidth(), c.getHeight() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dimension getPreferredSize( JComponent c ) {
|
||||||
|
return applyMinimumWidth( super.getPreferredSize( c ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dimension getMinimumSize( JComponent c ) {
|
||||||
|
return applyMinimumWidth( super.getMinimumSize( c ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dimension applyMinimumWidth( Dimension 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
|
||||||
|
// issues. E.g. at scale factor 1.5 the first returns 4, but the second 3.
|
||||||
|
size.width = Math.max( size.width, scale( minimumWidth ) - (scale( 1 ) * 2) );
|
||||||
|
return size;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,11 +17,15 @@
|
|||||||
package com.formdev.flatlaf.ui;
|
package com.formdev.flatlaf.ui;
|
||||||
|
|
||||||
import static com.formdev.flatlaf.util.UIScale.scale;
|
import static com.formdev.flatlaf.util.UIScale.scale;
|
||||||
|
import java.awt.Container;
|
||||||
|
import java.awt.Dimension;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.event.FocusEvent;
|
import java.awt.event.FocusEvent;
|
||||||
import java.awt.event.FocusListener;
|
import java.awt.event.FocusListener;
|
||||||
|
import javax.swing.JComboBox;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JSpinner;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import javax.swing.plaf.ComponentUI;
|
import javax.swing.plaf.ComponentUI;
|
||||||
import javax.swing.plaf.basic.BasicTextFieldUI;
|
import javax.swing.plaf.basic.BasicTextFieldUI;
|
||||||
@@ -33,6 +37,7 @@ import javax.swing.text.JTextComponent;
|
|||||||
* TODO document used UI defaults of superclass
|
* TODO document used UI defaults of superclass
|
||||||
*
|
*
|
||||||
* @uiDefault Component.focusWidth int
|
* @uiDefault Component.focusWidth int
|
||||||
|
* @uiDefault Component.minimumWidth int
|
||||||
*
|
*
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
*/
|
*/
|
||||||
@@ -40,6 +45,7 @@ public class FlatTextFieldUI
|
|||||||
extends BasicTextFieldUI
|
extends BasicTextFieldUI
|
||||||
{
|
{
|
||||||
protected int focusWidth;
|
protected int focusWidth;
|
||||||
|
protected int minimumWidth;
|
||||||
|
|
||||||
private Handler handler;
|
private Handler handler;
|
||||||
|
|
||||||
@@ -52,6 +58,7 @@ public class FlatTextFieldUI
|
|||||||
super.installDefaults();
|
super.installDefaults();
|
||||||
|
|
||||||
focusWidth = UIManager.getInt( "Component.focusWidth" );
|
focusWidth = UIManager.getInt( "Component.focusWidth" );
|
||||||
|
minimumWidth = UIManager.getInt( "Component.minimumWidth" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -95,6 +102,27 @@ public class FlatTextFieldUI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dimension getPreferredSize( JComponent c ) {
|
||||||
|
return applyMinimumWidth( super.getPreferredSize( c ), c );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dimension getMinimumSize( JComponent c ) {
|
||||||
|
return applyMinimumWidth( super.getMinimumSize( c ), c );
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dimension applyMinimumWidth( Dimension size, JComponent c ) {
|
||||||
|
Container parent = c.getParent();
|
||||||
|
if( parent instanceof JComboBox ||
|
||||||
|
parent instanceof JSpinner ||
|
||||||
|
(parent != null && parent.getParent() instanceof JSpinner) )
|
||||||
|
return size;
|
||||||
|
|
||||||
|
size.width = Math.max( size.width, scale( minimumWidth + (focusWidth * 2) ) );
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
//---- class Handler ------------------------------------------------------
|
//---- class Handler ------------------------------------------------------
|
||||||
|
|
||||||
private class Handler
|
private class Handler
|
||||||
|
|||||||
@@ -16,19 +16,54 @@
|
|||||||
|
|
||||||
package com.formdev.flatlaf.ui;
|
package com.formdev.flatlaf.ui;
|
||||||
|
|
||||||
|
import static com.formdev.flatlaf.util.UIScale.scale;
|
||||||
|
import java.awt.Dimension;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.UIManager;
|
||||||
import javax.swing.plaf.ComponentUI;
|
import javax.swing.plaf.ComponentUI;
|
||||||
import javax.swing.plaf.basic.BasicTextPaneUI;
|
import javax.swing.plaf.basic.BasicTextPaneUI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides the Flat LaF UI delegate for {@link javax.swing.JTextPane}.
|
* Provides the Flat LaF UI delegate for {@link javax.swing.JTextPane}.
|
||||||
*
|
*
|
||||||
|
* TODO document used UI defaults of superclass
|
||||||
|
*
|
||||||
|
* @uiDefault Component.minimumWidth int
|
||||||
|
*
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
*/
|
*/
|
||||||
public class FlatTextPaneUI
|
public class FlatTextPaneUI
|
||||||
extends BasicTextPaneUI
|
extends BasicTextPaneUI
|
||||||
{
|
{
|
||||||
|
protected int minimumWidth;
|
||||||
|
|
||||||
public static ComponentUI createUI( JComponent c ) {
|
public static ComponentUI createUI( JComponent c ) {
|
||||||
return new FlatTextPaneUI();
|
return new FlatTextPaneUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void installDefaults() {
|
||||||
|
super.installDefaults();
|
||||||
|
|
||||||
|
minimumWidth = UIManager.getInt( "Component.minimumWidth" );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dimension getPreferredSize( JComponent c ) {
|
||||||
|
return applyMinimumWidth( super.getPreferredSize( c ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dimension getMinimumSize( JComponent c ) {
|
||||||
|
return applyMinimumWidth( super.getMinimumSize( c ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dimension applyMinimumWidth( Dimension 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
|
||||||
|
// issues. E.g. at scale factor 1.5 the first returns 4, but the second 3.
|
||||||
|
size.width = Math.max( size.width, scale( minimumWidth ) - (scale( 1 ) * 2) );
|
||||||
|
return size;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ ComboBox.padding=1,6,1,6
|
|||||||
|
|
||||||
Component.focusWidth=0
|
Component.focusWidth=0
|
||||||
Component.arc=5
|
Component.arc=5
|
||||||
|
Component.minimumWidth=64
|
||||||
|
|
||||||
|
|
||||||
#---- EditorPane ----
|
#---- EditorPane ----
|
||||||
@@ -324,6 +325,7 @@ TextArea.border=com.formdev.flatlaf.ui.FlatMarginBorder
|
|||||||
TextArea.background=@textComponentBackground
|
TextArea.background=@textComponentBackground
|
||||||
TextArea.margin=@textComponentMargin
|
TextArea.margin=@textComponentMargin
|
||||||
|
|
||||||
|
|
||||||
#---- TextField ----
|
#---- TextField ----
|
||||||
|
|
||||||
TextField.border=com.formdev.flatlaf.ui.FlatBorder
|
TextField.border=com.formdev.flatlaf.ui.FlatBorder
|
||||||
|
|||||||
Reference in New Issue
Block a user