From b9d4e0ec9a74f34295451b9bb614fbde3822f4df Mon Sep 17 00:00:00 2001 From: Akumas_Coffin_ <68540569+AkumasCoffin@users.noreply.github.com> Date: Thu, 14 May 2026 21:34:02 +1000 Subject: [PATCH] Remove hardcoded Color.BLACK foreground on JideTabbedPanes ControllerPanel.getTabbedPane() and NowPlayingPanel.getTabbedPane() each called setForeground(Color.BLACK) on their JideTabbedPane instances. Color.BLACK is a plain java.awt.Color, not a ColorUIResource, so it is never replaced by LookAndFeel.installColorsAndFont() on subsequent UI installs - it permanently pins the tab labels to black regardless of any JIDE or FlatLaf defaults the theme manager sets. In dark mode this leaves the tab labels black-on-dark and unreadable. Drop the explicit foreground calls so the LAF (JideTabbedPaneUI reading JideTabbedPane.foreground / .unselectedTabTextForeground / .selectedTabTextForeground / .activeTabTextForeground) drives the colour in both light and dark modes. --- .../io/github/dsheirer/channel/metadata/NowPlayingPanel.java | 2 -- .../java/io/github/dsheirer/controller/ControllerPanel.java | 1 - 2 files changed, 3 deletions(-) diff --git a/src/main/java/io/github/dsheirer/channel/metadata/NowPlayingPanel.java b/src/main/java/io/github/dsheirer/channel/metadata/NowPlayingPanel.java index b6933576..e0119f17 100644 --- a/src/main/java/io/github/dsheirer/channel/metadata/NowPlayingPanel.java +++ b/src/main/java/io/github/dsheirer/channel/metadata/NowPlayingPanel.java @@ -28,7 +28,6 @@ import io.github.dsheirer.module.decode.event.MessageActivityPanel; import io.github.dsheirer.playlist.PlaylistManager; import io.github.dsheirer.preference.UserPreferences; import io.github.dsheirer.settings.SettingsManager; -import java.awt.Color; import net.miginfocom.swing.MigLayout; import javax.swing.JPanel; @@ -98,7 +97,6 @@ public class NowPlayingPanel extends JPanel mTabbedPane.addTab("Messages", mMessageActivityPanel); mTabbedPane.addTab("Channel", mChannelSpectrumSquelchPanel); mTabbedPane.setFont(this.getFont()); - mTabbedPane.setForeground(Color.BLACK); //Register state change listener to toggle visibility state for channel tab to turn-on/off FFT processing mTabbedPane.addChangeListener(e -> mChannelSpectrumSquelchPanel.setPanelVisible(getTabbedPane().getSelectedIndex() == getTabbedPane() .indexOfComponent(mChannelSpectrumSquelchPanel))); diff --git a/src/main/java/io/github/dsheirer/controller/ControllerPanel.java b/src/main/java/io/github/dsheirer/controller/ControllerPanel.java index 1f4c62d6..79a7e707 100644 --- a/src/main/java/io/github/dsheirer/controller/ControllerPanel.java +++ b/src/main/java/io/github/dsheirer/controller/ControllerPanel.java @@ -100,7 +100,6 @@ public class ControllerPanel extends JPanel } }; mTabbedPane.setFont(this.getFont()); - mTabbedPane.setForeground(Color.BLACK); mTabbedPane.addTab("Now Playing", mNowPlayingPanel); mTabbedPane.addTab("Map", mMapPanel); mTabbedPane.addTab("Tuners", mTunerManagerPanel);