mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-12 23:07:15 -06:00
TextField: leading/trailing components (PR #386):
- set cursor only on button and toolbar - do not replace cursor on if already set (issue #461) - updated client properties javadoc
This commit is contained in:
@@ -874,7 +874,26 @@ public interface FlatClientProperties
|
|||||||
* The component should be not opaque because the text field border is painted
|
* The component should be not opaque because the text field border is painted
|
||||||
* slightly inside the usually visible border in some cases.
|
* slightly inside the usually visible border in some cases.
|
||||||
* E.g. when focused (in some themes) or when an outline color is specified
|
* E.g. when focused (in some themes) or when an outline color is specified
|
||||||
* (see {@link #OUTLINE}.
|
* (see {@link #OUTLINE}).
|
||||||
|
* <p>
|
||||||
|
* The component is prepared in the following way:
|
||||||
|
* <ul>
|
||||||
|
* <li>Component client property {@link #STYLE_CLASS} is set to {@code inTextField}.
|
||||||
|
* <li>If component is a button or toggle button, client property {@link #BUTTON_TYPE}
|
||||||
|
* is set to {@link #BUTTON_TYPE_TOOLBAR_BUTTON}
|
||||||
|
* and button cursor is set to default cursor (if not set).
|
||||||
|
* <li>If component is a toolbar, client property {@link #STYLE_CLASS}
|
||||||
|
* is set to {@code inTextField} on all toolbar children
|
||||||
|
* and toolbar cursor is set to default cursor (if not set).
|
||||||
|
* </ul>
|
||||||
|
* Because text fields use the text cursor by default and the cursor is inherited by child components,
|
||||||
|
* it may be necessary to explicitly set component cursor if you e.g. need the default arrow cursor.
|
||||||
|
* E.g. {@code comp.setCursor( Cursor.getDefaultCursor() )}.
|
||||||
|
* <p>
|
||||||
|
* Styling is used to modify insets/margins and appearance of buttons and toolbars
|
||||||
|
* so that they fit nicely into the text field and do not increase text field height.
|
||||||
|
* See styles {@code [style]Button.inTextField} and {@code [style]ToolBar.inTextField}
|
||||||
|
* in {@code Flat[Light|Dark]Laf.properties}.
|
||||||
* <p>
|
* <p>
|
||||||
* <strong>Component</strong> {@link javax.swing.JTextField} (and subclasses)<br>
|
* <strong>Component</strong> {@link javax.swing.JTextField} (and subclasses)<br>
|
||||||
* <strong>Value type</strong> {@link javax.swing.JComponent}
|
* <strong>Value type</strong> {@link javax.swing.JComponent}
|
||||||
@@ -886,15 +905,7 @@ public interface FlatClientProperties
|
|||||||
/**
|
/**
|
||||||
* Specifies a component that will be placed at the trailing edge of the text field.
|
* Specifies a component that will be placed at the trailing edge of the text field.
|
||||||
* <p>
|
* <p>
|
||||||
* The component will be positioned inside and aligned to the visible text field border.
|
* See {@link #TEXT_FIELD_LEADING_COMPONENT} for details.
|
||||||
* There is no gap between the visible border and the component.
|
|
||||||
* The laid out component size will be the preferred component width
|
|
||||||
* and the inner text field height.
|
|
||||||
* <p>
|
|
||||||
* The component should be not opaque because the text field border is painted
|
|
||||||
* slightly inside the usually visible border in some cases.
|
|
||||||
* E.g. when focused (in some themes) or when an outline color is specified
|
|
||||||
* (see {@link #OUTLINE}.
|
|
||||||
* <p>
|
* <p>
|
||||||
* <strong>Component</strong> {@link javax.swing.JTextField} (and subclasses)<br>
|
* <strong>Component</strong> {@link javax.swing.JTextField} (and subclasses)<br>
|
||||||
* <strong>Value type</strong> {@link javax.swing.JComponent}
|
* <strong>Value type</strong> {@link javax.swing.JComponent}
|
||||||
|
|||||||
@@ -826,15 +826,20 @@ debug*/
|
|||||||
/** @since 2 */
|
/** @since 2 */
|
||||||
protected void prepareLeadingOrTrailingComponent( JComponent c ) {
|
protected void prepareLeadingOrTrailingComponent( JComponent c ) {
|
||||||
c.putClientProperty( STYLE_CLASS, "inTextField" );
|
c.putClientProperty( STYLE_CLASS, "inTextField" );
|
||||||
c.setCursor( Cursor.getDefaultCursor() );
|
|
||||||
|
|
||||||
if( c instanceof JButton || c instanceof JToggleButton )
|
if( c instanceof JButton || c instanceof JToggleButton ) {
|
||||||
c.putClientProperty( BUTTON_TYPE, BUTTON_TYPE_TOOLBAR_BUTTON );
|
c.putClientProperty( BUTTON_TYPE, BUTTON_TYPE_TOOLBAR_BUTTON );
|
||||||
else if( c instanceof JToolBar ) {
|
|
||||||
|
if( !c.isCursorSet() )
|
||||||
|
c.setCursor( Cursor.getDefaultCursor() );
|
||||||
|
} else if( c instanceof JToolBar ) {
|
||||||
for( Component child : c.getComponents() ) {
|
for( Component child : c.getComponents() ) {
|
||||||
if( child instanceof JComponent )
|
if( child instanceof JComponent )
|
||||||
((JComponent)child).putClientProperty( STYLE_CLASS, "inTextField" );
|
((JComponent)child).putClientProperty( STYLE_CLASS, "inTextField" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( !c.isCursorSet() )
|
||||||
|
c.setCursor( Cursor.getDefaultCursor() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user