У нас есть приложение Java, которое использует Swing, но мы переносим его на JavaFX. Поэтому мы переносим старый код Swing на SwingNode и заменяем его шаг за шагом.
Перед миграцией приложение Swing использовало com.sun.java.swing.plaf.gtk.GTKLookAndFeel как внешний вид (по умолчанию для Ubuntu). Мы использовали следующий код для его установки (если есть):
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if (info.getClassName().equals("com.sun.java.swing.plaf.gtk.GTKLookAndFeel")) {
UIManager.setLookAndFeel(info.getClassName());
}
}
Все прошло отлично. Тем не менее, после перехода на JavaFX вызов UIManager.setLookAndFeel() зависает от приложения, и ничего не происходит. Ручная настройка look-and-feel необходима, так как мы хотим по-прежнему стилизовать компоненты Swing, которые не были перенесены в JavaFX на основе GTKLookAndFeel.
Дополнительная информация: Это не работает с com.sun.java.swing.plaf.gtk.GTKLookAndFeel, так как оно работает при использовании javax.swing.plaf.metal.MetalLookAndFeel, javax.swing.plaf.nimbus.NimbusLookAndFeel или com.sun.java.swing.plaf.motif.MotifLookAndFeel.
Что мы можем сделать, чтобы он работал с GTKLookAndFeel для стилизации наших компонентов Swing в SwingNode s?