mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-11 14:37:13 -06:00
Merge PR #713: Scrollpane rounded border
This commit is contained in:
@@ -28,7 +28,6 @@ import javax.swing.JComboBox;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JSpinner;
|
||||
import javax.swing.JViewport;
|
||||
import javax.swing.UIManager;
|
||||
import javax.swing.plaf.basic.BasicBorders;
|
||||
import com.formdev.flatlaf.FlatClientProperties;
|
||||
@@ -195,8 +194,7 @@ public class FlatBorder
|
||||
protected boolean isEnabled( Component c ) {
|
||||
if( c instanceof JScrollPane ) {
|
||||
// check whether view component is disabled
|
||||
JViewport viewport = ((JScrollPane)c).getViewport();
|
||||
Component view = (viewport != null) ? viewport.getView() : null;
|
||||
Component view = FlatScrollPaneUI.getView( (JScrollPane) c );
|
||||
if( view != null && !isEnabled( view ) )
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
/*
|
||||
* Copyright 2023 FormDev Software GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.formdev.flatlaf.ui;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.Insets;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.JTree;
|
||||
import javax.swing.UIManager;
|
||||
import javax.swing.text.JTextComponent;
|
||||
import com.formdev.flatlaf.ui.FlatStylingSupport.Styleable;
|
||||
import com.formdev.flatlaf.util.UIScale;
|
||||
|
||||
/**
|
||||
* Border for {@link javax.swing.JScrollPane}.
|
||||
*
|
||||
* @uiDefault ScrollPane.arc int
|
||||
* @uiDefault ScrollPane.List.arc int
|
||||
* @uiDefault ScrollPane.Table.arc int
|
||||
* @uiDefault ScrollPane.TextComponent.arc int
|
||||
* @uiDefault ScrollPane.Tree.arc int
|
||||
|
||||
* @author Karl Tauber
|
||||
* @since 3.3
|
||||
*/
|
||||
public class FlatScrollPaneBorder
|
||||
extends FlatBorder
|
||||
{
|
||||
@Styleable protected int arc = UIManager.getInt( "ScrollPane.arc" );
|
||||
|
||||
private boolean isArcStyled;
|
||||
private final int listArc = FlatUIUtils.getUIInt( "ScrollPane.List.arc", -1 );
|
||||
private final int tableArc = FlatUIUtils.getUIInt( "ScrollPane.Table.arc", -1 );
|
||||
private final int textComponentArc = FlatUIUtils.getUIInt( "ScrollPane.TextComponent.arc", -1 );
|
||||
private final int treeArc = FlatUIUtils.getUIInt( "ScrollPane.Tree.arc", -1 );
|
||||
|
||||
@Override
|
||||
public Object applyStyleProperty( String key, Object value ) {
|
||||
Object oldValue = super.applyStyleProperty( key, value );
|
||||
|
||||
if( "arc".equals( key ) )
|
||||
isArcStyled = true;
|
||||
|
||||
return oldValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Insets getBorderInsets( Component c, Insets insets ) {
|
||||
insets = super.getBorderInsets( c, insets );
|
||||
|
||||
// if view is rounded, increase left and right insets to avoid that the viewport
|
||||
// is painted over the rounded border on the corners
|
||||
int padding = getLeftRightPadding( c );
|
||||
if( padding > 0 ) {
|
||||
insets.left += padding;
|
||||
insets.right += padding;
|
||||
}
|
||||
|
||||
return insets;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getArc( Component c ) {
|
||||
if( isCellEditor( c ) )
|
||||
return 0;
|
||||
|
||||
if( isArcStyled )
|
||||
return arc;
|
||||
|
||||
if( c instanceof JScrollPane ) {
|
||||
Component view = FlatScrollPaneUI.getView( (JScrollPane) c );
|
||||
if( listArc >= 0 && view instanceof JList )
|
||||
return listArc;
|
||||
if( tableArc >= 0 && view instanceof JTable )
|
||||
return tableArc;
|
||||
if( textComponentArc >= 0&& view instanceof JTextComponent )
|
||||
return textComponentArc;
|
||||
if( treeArc >= 0 && view instanceof JTree )
|
||||
return treeArc;
|
||||
}
|
||||
|
||||
return arc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the scaled left/right padding used when arc is larger than zero.
|
||||
* <p>
|
||||
* This is the distance from the inside of the left border to the left side of the view component.
|
||||
* On the right side, this is the distance between the right side of the view component and
|
||||
* the vertical scrollbar. Or the inside of the right border if the scrollbar is hidden.
|
||||
*/
|
||||
public int getLeftRightPadding( Component c ) {
|
||||
// Subtract lineWidth from radius because radius is given for the outside
|
||||
// of the painted line, but insets from super already include lineWidth.
|
||||
// Reduce padding by 10% to make padding slightly smaller because it is not recognizable
|
||||
// when the view is minimally painted over the beginning of the border curve.
|
||||
int arc = getArc( c );
|
||||
return (arc > 0)
|
||||
? Math.max( Math.round( UIScale.scale( ((arc / 2f) - getLineWidth( c )) * 0.9f ) ), 0 )
|
||||
: 0;
|
||||
}
|
||||
}
|
||||
@@ -17,9 +17,12 @@
|
||||
package com.formdev.flatlaf.ui;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.Container;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Insets;
|
||||
import java.awt.KeyboardFocusManager;
|
||||
import java.awt.LayoutManager;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.event.ContainerEvent;
|
||||
import java.awt.event.ContainerListener;
|
||||
@@ -41,16 +44,19 @@ import javax.swing.JTree;
|
||||
import javax.swing.JViewport;
|
||||
import javax.swing.LookAndFeel;
|
||||
import javax.swing.ScrollPaneConstants;
|
||||
import javax.swing.ScrollPaneLayout;
|
||||
import javax.swing.Scrollable;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.UIManager;
|
||||
import javax.swing.border.Border;
|
||||
import javax.swing.plaf.ComponentUI;
|
||||
import javax.swing.plaf.basic.BasicScrollPaneUI;
|
||||
import com.formdev.flatlaf.FlatClientProperties;
|
||||
import com.formdev.flatlaf.ui.FlatStylingSupport.Styleable;
|
||||
import com.formdev.flatlaf.ui.FlatStylingSupport.StyleableUI;
|
||||
import com.formdev.flatlaf.util.LoggingFacade;
|
||||
import com.formdev.flatlaf.util.UIScale;
|
||||
|
||||
/**
|
||||
* Provides the Flat LaF UI delegate for {@link javax.swing.JScrollPane}.
|
||||
@@ -97,7 +103,13 @@ public class FlatScrollPaneUI
|
||||
super.installUI( c );
|
||||
|
||||
int focusWidth = UIManager.getInt( "Component.focusWidth" );
|
||||
LookAndFeel.installProperty( c, "opaque", focusWidth == 0 );
|
||||
int arc = UIManager.getInt( "ScrollPane.arc" );
|
||||
LookAndFeel.installProperty( c, "opaque", focusWidth == 0 && arc == 0 );
|
||||
|
||||
// install layout manager
|
||||
LayoutManager layout = c.getLayout();
|
||||
if( layout != null && layout.getClass() == ScrollPaneLayout.UIResource.class )
|
||||
c.setLayout( createScrollPaneLayout() );
|
||||
|
||||
installStyle();
|
||||
|
||||
@@ -108,6 +120,10 @@ public class FlatScrollPaneUI
|
||||
public void uninstallUI( JComponent c ) {
|
||||
MigLayoutVisualPadding.uninstall( scrollpane );
|
||||
|
||||
// uninstall layout manager
|
||||
if( c.getLayout() instanceof FlatScrollPaneLayout )
|
||||
c.setLayout( new ScrollPaneLayout.UIResource() );
|
||||
|
||||
super.uninstallUI( c );
|
||||
|
||||
oldStyleValues = null;
|
||||
@@ -130,6 +146,13 @@ public class FlatScrollPaneUI
|
||||
handler = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 3.3
|
||||
*/
|
||||
protected FlatScrollPaneLayout createScrollPaneLayout() {
|
||||
return new FlatScrollPaneLayout();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected MouseWheelListener createMouseWheelListener() {
|
||||
MouseWheelListener superListener = super.createMouseWheelListener();
|
||||
@@ -290,8 +313,7 @@ public class FlatScrollPaneUI
|
||||
Object corner = e.getNewValue();
|
||||
if( corner instanceof JButton &&
|
||||
((JButton)corner).getBorder() instanceof FlatButtonBorder &&
|
||||
scrollpane.getViewport() != null &&
|
||||
scrollpane.getViewport().getView() instanceof JTable )
|
||||
getView( scrollpane ) instanceof JTable )
|
||||
{
|
||||
((JButton)corner).setBorder( BorderFactory.createEmptyBorder() );
|
||||
((JButton)corner).setFocusable( false );
|
||||
@@ -308,6 +330,18 @@ public class FlatScrollPaneUI
|
||||
scrollpane.revalidate();
|
||||
scrollpane.repaint();
|
||||
break;
|
||||
|
||||
case "border":
|
||||
Object newBorder = e.getNewValue();
|
||||
if( newBorder != null && newBorder == UIManager.getBorder( "Table.scrollPaneBorder" ) ) {
|
||||
// JTable.configureEnclosingScrollPaneUI() replaces the scrollpane border
|
||||
// with another one --> re-apply style on new border
|
||||
borderShared = null;
|
||||
installStyle();
|
||||
scrollpane.revalidate();
|
||||
scrollpane.repaint();
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -334,9 +368,10 @@ public class FlatScrollPaneUI
|
||||
|
||||
/** @since 2 */
|
||||
protected Object applyStyleProperty( String key, Object value ) {
|
||||
if( key.equals( "focusWidth" ) ) {
|
||||
if( key.equals( "focusWidth" ) || key.equals( "arc" ) ) {
|
||||
int focusWidth = (value instanceof Integer) ? (int) value : UIManager.getInt( "Component.focusWidth" );
|
||||
LookAndFeel.installProperty( scrollpane, "opaque", focusWidth == 0 );
|
||||
int arc = (value instanceof Integer) ? (int) value : UIManager.getInt( "ScrollPane.arc" );
|
||||
LookAndFeel.installProperty( scrollpane, "opaque", focusWidth == 0 && arc == 0 );
|
||||
}
|
||||
|
||||
if( borderShared == null )
|
||||
@@ -402,13 +437,46 @@ public class FlatScrollPaneUI
|
||||
c.getHeight() - insets.top - insets.bottom );
|
||||
}
|
||||
|
||||
// if view is rounded, paint rounded background with view background color
|
||||
// to ensure that free areas at left and right have same color as view
|
||||
Component view;
|
||||
float arc = getBorderArc( scrollpane );
|
||||
if( arc > 0 && (view = getView( scrollpane )) != null ) {
|
||||
float focusWidth = FlatUIUtils.getBorderFocusWidth( c );
|
||||
|
||||
g.setColor( view.getBackground() );
|
||||
|
||||
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
|
||||
FlatUIUtils.paintComponentBackground( (Graphics2D) g, 0, 0, c.getWidth(), c.getHeight(), focusWidth, arc );
|
||||
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
|
||||
}
|
||||
|
||||
paint( g, c );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paint( Graphics g, JComponent c ) {
|
||||
Border viewportBorder = scrollpane.getViewportBorder();
|
||||
if( viewportBorder != null ) {
|
||||
Rectangle r = scrollpane.getViewportBorderBounds();
|
||||
int padding = getBorderLeftRightPadding( scrollpane );
|
||||
JScrollBar vsb = scrollpane.getVerticalScrollBar();
|
||||
if( padding > 0 &&
|
||||
vsb != null && vsb.isVisible() &&
|
||||
scrollpane.getLayout() instanceof FlatScrollPaneLayout &&
|
||||
((FlatScrollPaneLayout)scrollpane.getLayout()).canIncreaseViewportWidth( scrollpane ) )
|
||||
{
|
||||
boolean ltr = scrollpane.getComponentOrientation().isLeftToRight();
|
||||
int extraWidth = Math.min( padding, vsb.getWidth() );
|
||||
viewportBorder.paintBorder( scrollpane, g, r.x - (ltr ? 0 : extraWidth), r.y, r.width + extraWidth, r.height );
|
||||
} else
|
||||
viewportBorder.paintBorder( scrollpane, g, r.x, r.y, r.width, r.height );
|
||||
}
|
||||
}
|
||||
|
||||
/** @since 1.3 */
|
||||
public static boolean isPermanentFocusOwner( JScrollPane scrollPane ) {
|
||||
JViewport viewport = scrollPane.getViewport();
|
||||
Component view = (viewport != null) ? viewport.getView() : null;
|
||||
Component view = getView( scrollPane );
|
||||
if( view == null )
|
||||
return false;
|
||||
|
||||
@@ -428,6 +496,25 @@ public class FlatScrollPaneUI
|
||||
return false;
|
||||
}
|
||||
|
||||
static Component getView( JScrollPane scrollPane ) {
|
||||
JViewport viewport = scrollPane.getViewport();
|
||||
return (viewport != null) ? viewport.getView() : null;
|
||||
}
|
||||
|
||||
private static float getBorderArc( JScrollPane scrollPane ) {
|
||||
Border border = scrollPane.getBorder();
|
||||
return (border instanceof FlatScrollPaneBorder)
|
||||
? UIScale.scale( (float) ((FlatScrollPaneBorder)border).getArc( scrollPane ) )
|
||||
: 0;
|
||||
}
|
||||
|
||||
private static int getBorderLeftRightPadding( JScrollPane scrollPane ) {
|
||||
Border border = scrollPane.getBorder();
|
||||
return (border instanceof FlatScrollPaneBorder)
|
||||
? ((FlatScrollPaneBorder)border).getLeftRightPadding( scrollPane )
|
||||
: 0;
|
||||
}
|
||||
|
||||
//---- class Handler ------------------------------------------------------
|
||||
|
||||
/**
|
||||
@@ -450,13 +537,71 @@ public class FlatScrollPaneUI
|
||||
@Override
|
||||
public void focusGained( FocusEvent e ) {
|
||||
// necessary to update focus border
|
||||
scrollpane.repaint();
|
||||
if( scrollpane.getBorder() instanceof FlatBorder )
|
||||
scrollpane.repaint();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void focusLost( FocusEvent e ) {
|
||||
// necessary to update focus border
|
||||
scrollpane.repaint();
|
||||
if( scrollpane.getBorder() instanceof FlatBorder )
|
||||
scrollpane.repaint();
|
||||
}
|
||||
}
|
||||
|
||||
//---- class FlatScrollPaneLayout -----------------------------------------
|
||||
|
||||
/**
|
||||
* @since 3.3
|
||||
*/
|
||||
protected static class FlatScrollPaneLayout
|
||||
extends ScrollPaneLayout.UIResource
|
||||
{
|
||||
@Override
|
||||
public void layoutContainer( Container parent ) {
|
||||
super.layoutContainer( parent );
|
||||
|
||||
JScrollPane scrollPane = (JScrollPane) parent;
|
||||
int padding = getBorderLeftRightPadding( scrollPane );
|
||||
if( padding > 0 && vsb != null && vsb.isVisible() ) {
|
||||
// move vertical scrollbar to trailing edge
|
||||
Insets insets = scrollPane.getInsets();
|
||||
Rectangle r = vsb.getBounds();
|
||||
int y = Math.max( r.y, insets.top + padding );
|
||||
int y2 = Math.min( r.y + r.height, scrollPane.getHeight() - insets.bottom - padding );
|
||||
boolean ltr = scrollPane.getComponentOrientation().isLeftToRight();
|
||||
|
||||
vsb.setBounds( r.x + (ltr ? padding : -padding), y, r.width, y2 - y );
|
||||
|
||||
// increase width of viewport, column header and horizontal scrollbar
|
||||
if( canIncreaseViewportWidth( scrollPane ) ) {
|
||||
int extraWidth = Math.min( padding, vsb.getWidth() );
|
||||
resizeViewport( viewport, extraWidth, ltr );
|
||||
resizeViewport( colHead, extraWidth, ltr );
|
||||
resizeViewport( hsb, extraWidth, ltr );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
boolean canIncreaseViewportWidth( JScrollPane scrollPane ) {
|
||||
return scrollPane.getComponentOrientation().isLeftToRight()
|
||||
? !isCornerVisible( upperRight ) && !isCornerVisible( lowerRight )
|
||||
: !isCornerVisible( upperLeft ) && !isCornerVisible( lowerLeft );
|
||||
}
|
||||
|
||||
private static boolean isCornerVisible( Component corner ) {
|
||||
return corner != null &&
|
||||
corner.getWidth() > 0 &&
|
||||
corner.getHeight() > 0 &&
|
||||
corner.isVisible();
|
||||
}
|
||||
|
||||
private static void resizeViewport( Component c, int extraWidth, boolean ltr ) {
|
||||
if( c == null )
|
||||
return;
|
||||
|
||||
Rectangle vr = c.getBounds();
|
||||
c.setBounds( vr.x - (ltr ? 0 : extraWidth), vr.y, vr.width + extraWidth, vr.height );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -600,10 +600,15 @@ ScrollBar.allowsAbsolutePositioning = true
|
||||
|
||||
#---- ScrollPane ----
|
||||
|
||||
ScrollPane.border = com.formdev.flatlaf.ui.FlatBorder
|
||||
ScrollPane.border = com.formdev.flatlaf.ui.FlatScrollPaneBorder
|
||||
ScrollPane.background = $ScrollBar.track
|
||||
ScrollPane.fillUpperCorner = true
|
||||
ScrollPane.smoothScrolling = true
|
||||
ScrollPane.arc = 0
|
||||
#ScrollPane.List.arc = -1
|
||||
#ScrollPane.Table.arc = -1
|
||||
#ScrollPane.TextComponent.arc = -1
|
||||
#ScrollPane.Tree.arc = -1
|
||||
|
||||
|
||||
#---- SearchField ----
|
||||
@@ -734,7 +739,7 @@ Table.showVerticalLines = false
|
||||
Table.showTrailingVerticalLine = false
|
||||
Table.consistentHomeEndKeyBehavior = true
|
||||
Table.intercellSpacing = 0,0
|
||||
Table.scrollPaneBorder = com.formdev.flatlaf.ui.FlatBorder
|
||||
Table.scrollPaneBorder = com.formdev.flatlaf.ui.FlatScrollPaneBorder
|
||||
Table.ascendingSortIcon = com.formdev.flatlaf.icons.FlatAscendingSortIcon
|
||||
Table.descendingSortIcon = com.formdev.flatlaf.icons.FlatDescendingSortIcon
|
||||
Table.sortIconColor = @icon
|
||||
|
||||
@@ -601,7 +601,7 @@ public class TestFlatStyleableInfo
|
||||
);
|
||||
|
||||
// border
|
||||
flatBorder( expected );
|
||||
flatScrollPaneBorder( expected );
|
||||
|
||||
assertMapEquals( expected, ui.getStyleableInfos( c ) );
|
||||
}
|
||||
@@ -1008,17 +1008,23 @@ public class TestFlatStyleableInfo
|
||||
|
||||
expectedMap( expected,
|
||||
"arc", int.class,
|
||||
|
||||
"roundRect", Boolean.class
|
||||
);
|
||||
}
|
||||
|
||||
private void flatScrollPaneBorder( Map<String, Class<?>> expected ) {
|
||||
flatBorder( expected );
|
||||
|
||||
expectedMap( expected,
|
||||
"arc", int.class
|
||||
);
|
||||
}
|
||||
|
||||
private void flatTextBorder( Map<String, Class<?>> expected ) {
|
||||
flatBorder( expected );
|
||||
|
||||
expectedMap( expected,
|
||||
"arc", int.class,
|
||||
|
||||
"roundRect", Boolean.class
|
||||
);
|
||||
}
|
||||
|
||||
@@ -625,7 +625,7 @@ public class TestFlatStyleableValue
|
||||
FlatScrollPaneUI ui = (FlatScrollPaneUI) c.getUI();
|
||||
|
||||
// border
|
||||
flatBorder( c, ui );
|
||||
flatScrollPaneBorder( c, ui );
|
||||
|
||||
testBoolean( c, ui, "showButtons", true );
|
||||
}
|
||||
@@ -968,15 +968,19 @@ public class TestFlatStyleableValue
|
||||
flatBorder( c, ui );
|
||||
|
||||
testInteger( c, ui, "arc", 123 );
|
||||
|
||||
testBoolean( c, ui, "roundRect", true );
|
||||
}
|
||||
|
||||
private void flatScrollPaneBorder( JComponent c, StyleableUI ui ) {
|
||||
flatBorder( c, ui );
|
||||
|
||||
testInteger( c, ui, "arc", 123 );
|
||||
}
|
||||
|
||||
private void flatTextBorder( JComponent c, StyleableUI ui ) {
|
||||
flatBorder( c, ui );
|
||||
|
||||
testInteger( c, ui, "arc", 123 );
|
||||
|
||||
testBoolean( c, ui, "roundRect", true );
|
||||
}
|
||||
|
||||
@@ -1037,6 +1041,17 @@ public class TestFlatStyleableValue
|
||||
// FlatRoundBorder extends FlatBorder
|
||||
flatBorder( border );
|
||||
|
||||
testValue( border, "arc", 6 );
|
||||
testValue( border, "roundRect", true );
|
||||
}
|
||||
|
||||
@Test
|
||||
void flatScrollPaneBorder() {
|
||||
FlatScrollPaneBorder border = new FlatScrollPaneBorder();
|
||||
|
||||
// FlatScrollPaneBorder extends FlatBorder
|
||||
flatBorder( border );
|
||||
|
||||
testValue( border, "arc", 6 );
|
||||
}
|
||||
|
||||
@@ -1048,6 +1063,7 @@ public class TestFlatStyleableValue
|
||||
flatBorder( border );
|
||||
|
||||
testValue( border, "arc", 6 );
|
||||
testValue( border, "roundRect", true );
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -760,7 +760,7 @@ public class TestFlatStyling
|
||||
FlatScrollPaneUI ui = (FlatScrollPaneUI) c.getUI();
|
||||
|
||||
// border
|
||||
flatBorder( style -> ui.applyStyle( style ) );
|
||||
flatScrollPaneBorder( style -> ui.applyStyle( style ) );
|
||||
|
||||
ui.applyStyle( "showButtons: true" );
|
||||
|
||||
@@ -1237,15 +1237,19 @@ public class TestFlatStyling
|
||||
flatBorder( applyStyle );
|
||||
|
||||
applyStyle.accept( "arc: 6" );
|
||||
|
||||
applyStyle.accept( "roundRect: true" );
|
||||
}
|
||||
|
||||
private void flatScrollPaneBorder( Consumer<String> applyStyle ) {
|
||||
flatBorder( applyStyle );
|
||||
|
||||
applyStyle.accept( "arc: 6" );
|
||||
}
|
||||
|
||||
private void flatTextBorder( Consumer<String> applyStyle ) {
|
||||
flatBorder( applyStyle );
|
||||
|
||||
applyStyle.accept( "arc: 6" );
|
||||
|
||||
applyStyle.accept( "roundRect: true" );
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user