-
-
Notifications
You must be signed in to change notification settings - Fork 278
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JLabel with rounded border corners and background #842
Comments
Demo: added rounded panels and labels to "More Components" tab
Great idea 👍 This is now implemented in latest
It is now also possible to omit color and thickness for label.putClientProperty(FlatClientProperties.STYLE,
"background: #00498C; foreground: #A9D1FF; border: 5,10,5,10,,,999"); Alternatively, you can use the new label.putClientProperty(FlatClientProperties.STYLE,
"background: #00498C; foreground: #A9D1FF; arc: 999; border: 5,10,5,10"); It is also possible to use Rounded background with line border: label.setBorder( new FlatLineBorder( new Insets( 5, 10, 5, 10 ), new Color( 0xE1FF68 ), 1, 999 ) );
label.setBackground( new Color( 0x00498C ) );
label.setForeground( new Color( 0xA9D1FF ) ); Rounded background without line border: label.setBorder( new FlatLineBorder( new Insets( 5, 10, 5, 10 ), 999 ) );
label.setBackground( new Color( 0x00498C ) );
label.setForeground( new Color( 0xA9D1FF ) ); See comment #367 (comment) for more tips regarding rounded border and background. |
This is a nice feature because it makes it easy to create badges: FlatLaf styling allows you to define badge style in FlatLaf properties files. Following sample creates badges shown in above screenshot. Create file [style]Label.myRedBadge = \
arc: 999; \
border: 2,8,2,8,#f87171; \
foreground: #dc2625; \
background: #fef2f2
[style]Label.myYellowBadge = \
arc: 12; \
border: 2,8,2,8,#fbbf23; \
foreground: #d97707; \
background: #fffbeb
[style]Label.myGreenBadge = \
arc: 999; \
border: 2,8,2,8; \
foreground: #1f9669; \
background: #abf6d3
[style]Label.myBlueBadge = \
arc: 999; \
border: 2,8,2,8; \
foreground: #fff; \
background: #4f46e5 File package com.badgesamples;
import java.awt.*;
import javax.swing.*;
import com.formdev.flatlaf.*;
public class BadgeSample
{
public static void main( String[] args ) {
SwingUtilities.invokeLater( () -> {
FlatLaf.registerCustomDefaultsSource( "com.badgesamples" );
FlatLightLaf.setup();
JFrame frame = new JFrame( "Badge Sample" );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
JLabel redBadge = new JLabel( "Label" );
JLabel yellowBadge = new JLabel( "Label" );
JLabel greenBadge = new JLabel( "Label" );
JLabel blueBadge = new JLabel( "Label" );
redBadge.putClientProperty( FlatClientProperties.STYLE_CLASS, "myRedBadge small" );
yellowBadge.putClientProperty( FlatClientProperties.STYLE_CLASS, "myYellowBadge small" );
greenBadge.putClientProperty( FlatClientProperties.STYLE_CLASS, "myGreenBadge small" );
blueBadge.putClientProperty( FlatClientProperties.STYLE_CLASS, "myBlueBadge small" );
JPanel panel = new JPanel( new FlowLayout() );
panel.setBackground( Color.white );
panel.add( redBadge );
panel.add( yellowBadge );
panel.add( greenBadge );
panel.add( blueBadge);
frame.add( panel );
frame.setSize( 400, 100 );
frame.setVisible( true );
} );
}
} The style Of course, it is also possible to create badges without properties files: JLabel redBadge = new JLabel( "Label" );
redBadge.putClientProperty( FlatClientProperties.STYLE, "arc: 999; border: 2,8,2,8,#f87171" );
redBadge.setForeground( new Color( 0xdc2625 ) );
redBadge.setBackground( new Color( 0xfef2f2 ) );
JLabel yellowBadge = new JLabel( "Label" );
yellowBadge.putClientProperty( FlatClientProperties.STYLE,
"arc: 12; border: 2,8,2,8,#fbbf23; foreground: #d97707; background: #fffbeb" );
yellowBadge.putClientProperty( FlatClientProperties.STYLE_CLASS, "small" ); |
Very nice! |
Karl, congratulations on Flatlaf, and thanks for giving the swing a new life.
This personalization
Results in
In the FlatLabelUI class could also have its update() method implementing it as it did in FlatPanelUI, and thus ensure that the color of the background would be rounded, as we see in a JPanel with that same personalization.
I can currently resolve through Jlabel's paintComponent(), but if there was a native feature on FlatLaf, it would be pretty cool, because JLabel with rounded corners allows us to create very stylish and modern titles.
What do you think of the idea?
Thank you, and see you soon.
The text was updated successfully, but these errors were encountered: