У нас есть приложение 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?