Я подозреваю, что это может быть связано с встроенной интеграцией Look and Feel в macOS, которая переопределяет некоторые настройки. Вот код, который я использую:
Код: Выделить всё
package university.management.system;
import java.awt.*;
import javax.swing.*;
public class Project extends JFrame {
Project() {
setSize(1440, 900);
ImageIcon i1 = new ImageIcon(ClassLoader.getSystemResource("icons/third.jpg"));
Image i2 = i1.getImage().getScaledInstance(2250, 1500, Image.SCALE_DEFAULT);
ImageIcon i3 = new ImageIcon(i2);
JLabel image = new JLabel(i3);
add(image);
JMenuBar mb = new JMenuBar();
JMenu newInfo = new JMenu("New Information");
newInfo.setForeground(Color.RED); // Trying to set text color to red
mb.add(newInfo);
setJMenuBar(mb);
setVisible(true);
}
public static void main(String[] args) {
// Disable macOS native menu bar integration
System.setProperty("apple.laf.useScreenMenuBar", "false");
new Project();
}
}
Отключена интеграция встроенной строки меню macOS с System.setProperty("apple.laf.useScreenMenuBar", "false") ;
Поэкспериментировал со свойствами UIManager:
Код: Выделить всё
UIManager.put("Menu.foreground", Color.RED);
UIManager.put("Menu.selectionBackground", Color.LIGHT_GRAY);
Код: Выделить всё
CrossPlatformLookAndFeel
Несмотря на эти попытки, цвет текста меню в macOS остается неизменным. Тот же код работает, как и ожидалось, в Windows.
Почему метод setForeground не работает в macOS?
Как я могу применить пользовательские цвета текста меню в приложениях macOS Swing?
Есть ли обходной путь или альтернативный подход для достижения этой цели?
Подробнее здесь: https://stackoverflow.com/questions/792 ... pplication