Force-override Swing foreground colors via UIManager user-defaults layer

Symptom: With dark mode enabled the inner Swing content area now had dark
panels (good) but tab labels, table cells, status-bar labels and button
text were rendering nearly black-on-dark (bad).

Root cause: UIManager.getLookAndFeelDefaults() lookups for FlatLaf's
component foreground keys still resolve to Metal-era dark values after the
JIDE install + FlatLaf re-apply, because some FlatLaf keys are derived /
LazyValue and recompute against state that JIDE seeded.

Fix: After the bulk FlatLaf-defaults copy, explicitly UIManager.put the
foreground / background / selection / disabled / border colors for every
standard Swing component family.  UIManager.put writes to the user-defaults
layer that takes precedence over the LAF defaults, so these overrides win
regardless of what JIDE or derived-value resolution produces.

Also bump the JavaFX dark stylesheet text colour from #d6d6d6 to #ececec so
labels read closer to white on the dark panels.
This commit is contained in:
Akumas_Coffin_
2026-05-14 20:42:56 +10:00
parent f4dbe4593c
commit 9bf35fcaaa
2 changed files with 148 additions and 30 deletions

View File

@@ -29,10 +29,10 @@
-fx-default-button: #4a90d9;
-fx-focus-color: #4a90d9;
-fx-faint-focus-color: #4a90d922;
-fx-text-fill: #d6d6d6;
-fx-text-base-color: #d6d6d6;
-fx-text-background-color: #d6d6d6;
-fx-mark-color: #d6d6d6;
-fx-text-fill: #ececec;
-fx-text-base-color: #ececec;
-fx-text-background-color: #ececec;
-fx-mark-color: #ececec;
-fx-mark-highlight-color: #ffffff;
-fx-selection-bar: #214283;
-fx-selection-bar-non-focused: #3a3d3f;
@@ -41,18 +41,18 @@
.label
{
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
}
.text
{
-fx-fill: #d6d6d6;
-fx-fill: #ececec;
}
.button, .toggle-button, .menu-button, .split-menu-button, .choice-box, .combo-box-base
{
-fx-background-color: #3c3f41, #4a4d4f, #3c3f41, #3c3f41;
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
}
.button:hover, .toggle-button:hover, .menu-button:hover
@@ -69,7 +69,7 @@
.text-field, .text-area, .password-field
{
-fx-background-color: #313335;
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
-fx-prompt-text-fill: #888888;
-fx-highlight-fill: #214283;
-fx-highlight-text-fill: #ffffff;
@@ -135,7 +135,7 @@
.menu-item .label
{
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
}
.menu-item:focused .label, .menu-item:hover .label
@@ -192,12 +192,12 @@
.table-view .column-header .label, .tree-table-view .column-header .label
{
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
}
.table-row-cell, .tree-table-row-cell, .list-cell, .tree-cell
{
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
-fx-background-color: -fx-control-inner-background;
}
@@ -224,7 +224,7 @@
.titled-pane > .title > .text
{
-fx-fill: #d6d6d6;
-fx-fill: #ececec;
}
.titled-pane > .content
@@ -254,7 +254,7 @@
.tooltip
{
-fx-background-color: #3c3f41;
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
-fx-border-color: #555a5e;
}
@@ -270,7 +270,7 @@
.toggle-switch
{
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
}
.toggle-switch > .thumb-area
@@ -287,7 +287,7 @@
.toggle-switch > .thumb
{
-fx-background-color: #d6d6d6;
-fx-background-color: #ececec;
}
.spinner
@@ -298,7 +298,7 @@
.spinner .text-field
{
-fx-background-color: #313335;
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
}
.spinner .increment-arrow-button, .spinner .decrement-arrow-button
@@ -308,7 +308,7 @@
.spinner .increment-arrow, .spinner .decrement-arrow
{
-fx-background-color: #d6d6d6;
-fx-background-color: #ececec;
}
.progress-bar > .track
@@ -323,7 +323,7 @@
.combo-box .list-cell, .choice-box .label
{
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
-fx-background-color: transparent;
}
@@ -375,12 +375,12 @@
.axis
{
-fx-tick-label-fill: #d6d6d6;
-fx-tick-label-fill: #ececec;
}
.axis-label
{
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
}
.chart-vertical-grid-lines, .chart-horizontal-grid-lines
@@ -391,10 +391,10 @@
.chart-legend
{
-fx-background-color: #313335;
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
}
.chart-title
{
-fx-text-fill: #d6d6d6;
-fx-text-fill: #ececec;
}