FlatRangeSliderUI fix change label foreground

This commit is contained in:
mmatessi
2020-11-13 09:42:26 +01:00
parent cb525fafb6
commit c0f15d2e6f
5 changed files with 275 additions and 250 deletions

View File

@@ -8,6 +8,8 @@ import java.awt.Point;
import java.awt.Rectangle;
import java.awt.geom.Path2D;
import java.awt.geom.RoundRectangle2D;
import java.util.Dictionary;
import java.util.Enumeration;
import javax.swing.JComponent;
import javax.swing.JSlider;
import javax.swing.LookAndFeel;
@@ -39,8 +41,40 @@ public class FlatRangeSliderUI
return new FlatRangeSliderUI( slider );
}
@Override
public void installUI( JComponent c ) {
super.installUI( c );
// update label UIs, which is necessary because RangeSlider does not invoke JSlider.updateLabelUIs()
updateLabelUIs( c );
}
@Override
public void uninstallUI( JComponent c ) {
// update label UIs also on uninstall to avoid light labels when switching
// from dark FlatLaf theme to another Laf
updateLabelUIs( c );
super.uninstallUI( c );
}
protected void updateLabelUIs( JComponent c ) {
Dictionary<?,?> labelTable = ((JSlider)c).getLabelTable();
if( labelTable == null )
return;
Enumeration<?> e = labelTable.elements();
while( e.hasMoreElements() ) {
JComponent label = (JComponent) e.nextElement();
label.updateUI();
label.setSize( label.getPreferredSize() );
}
}
@Override
public void paint( Graphics g, JComponent c ) {
FlatUIUtils.setRenderingHints( (Graphics2D) g );
second = false;
super.paint( g, c );

View File

@@ -36,11 +36,3 @@ JideTabbedPane.tabAreaInsets=$TabbedPane.tabAreaInsets
JideTabbedPane.contentBorderInsets=0,0,0,0
JideTabbedPane.tabRunOverlay=$TabbedPane.tabRunOverlay
JideTabbedPane.shadow=$TabbedPane.shadow
#---- RangeSlider ----
RangeSliderUI.foreground=@background