mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-13 07:17:13 -06:00
FlatLineBorder: use arc from Label or Panel, if not specified in border (issue #842)
This commit is contained in:
@@ -646,7 +646,7 @@ class UIDefaultsLoader
|
||||
: 1f;
|
||||
int arc = (parts.size() >= 7) && !parts.get( 6 ).isEmpty()
|
||||
? parseInteger( parts.get( 6 ) )
|
||||
: 0;
|
||||
: -1;
|
||||
|
||||
return (LazyValue) t -> {
|
||||
return (lineColor != null || arc > 0)
|
||||
|
||||
@@ -23,6 +23,9 @@ import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Insets;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.plaf.ComponentUI;
|
||||
|
||||
/**
|
||||
* Line border for various components.
|
||||
@@ -45,7 +48,7 @@ public class FlatLineBorder
|
||||
/** @since 2 */ private final int arc;
|
||||
|
||||
public FlatLineBorder( Insets insets, Color lineColor ) {
|
||||
this( insets, lineColor, 1f, 0 );
|
||||
this( insets, lineColor, 1f, -1 );
|
||||
}
|
||||
|
||||
/** @since 2 */
|
||||
@@ -92,11 +95,26 @@ public class FlatLineBorder
|
||||
if( lineColor == null || lineThickness <= 0 )
|
||||
return;
|
||||
|
||||
int arc = getArc();
|
||||
if( arc < 0 ) {
|
||||
// get arc from label or panel
|
||||
ComponentUI ui = (c instanceof JLabel)
|
||||
? ((JLabel)c).getUI()
|
||||
: (c instanceof JPanel ? ((JPanel)c).getUI() : null);
|
||||
if( ui instanceof FlatLabelUI )
|
||||
arc = ((FlatLabelUI)ui).arc;
|
||||
else if( ui instanceof FlatPanelUI )
|
||||
arc = ((FlatPanelUI)ui).arc;
|
||||
|
||||
if( arc < 0 )
|
||||
arc = 0;
|
||||
}
|
||||
|
||||
Graphics2D g2 = (Graphics2D) g.create();
|
||||
try {
|
||||
FlatUIUtils.setRenderingHints( g2 );
|
||||
FlatUIUtils.paintOutlinedComponent( g2, x, y, width, height,
|
||||
0, 0, 0, scale( lineThickness ), scale( getArc() ), null, lineColor, null );
|
||||
0, 0, 0, scale( lineThickness ), scale( arc ), null, lineColor, null );
|
||||
} finally {
|
||||
g2.dispose();
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ public class TestUIDefaultsLoader
|
||||
assertBorderEquals( new FlatEmptyBorder( insets ), "1,2,3,4" );
|
||||
assertBorderEquals( new FlatEmptyBorder( insets ), "1,2,3,4,,," );
|
||||
assertBorderEquals( new FlatLineBorder( insets, Color.red ), "1,2,3,4,#f00" );
|
||||
assertBorderEquals( new FlatLineBorder( insets, Color.red, 2.5f, 0 ), "1,2,3,4,#f00,2.5" );
|
||||
assertBorderEquals( new FlatLineBorder( insets, Color.red, 2.5f, -1 ), "1,2,3,4,#f00,2.5" );
|
||||
assertBorderEquals( new FlatLineBorder( insets, Color.red, 2.5f, 6 ), "1,2,3,4,#f00,2.5,6" );
|
||||
assertBorderEquals( new FlatLineBorder( insets, Color.red, 1, 6 ), "1,2,3,4,#f00,,6" );
|
||||
assertBorderEquals( new FlatLineBorder( insets, null, 1, 6 ), "1,2,3,4,,,6" );
|
||||
|
||||
Reference in New Issue
Block a user