согласовано с @Joey
если у вас есть исходный код от Java.net от Кирилла, то есть множество примеров, которые покажут вам
1) установить пользовательский интерфейс до
UIManager.installLookAndFeel("Substance " + sInfo.getDisplayName(), sInfo.getClassName());
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
someMainclass.setVisible(true);
}
});
2) ваша проблема с необходимыми SwingUtilities.updateComponentTreeUI(someWindow)
упакованными в попытку - поймать
for (Window w : Window.getWindows()) {
SwingUtilities.updateComponentTreeUI(w);
}
3) или самый безопасный способ, обязательно с контейнерами верхнего уровня для пункта 2dn
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(new SubstanceOfficeSilver2007LookAndFeel());
SwingUtilities.updateComponentTreeUI(frame);
} catch (UnsupportedLookAndFeelException e) {
throw new RuntimeException(e);
}
}
});
SwingUtilities.invokeLater(new Runnable() {
4) вы можете переключать темы, L & F, смешивая темы, но должны быть обернуты внутри InvokeLater()
5)
РЕДАКТИРОВАТЬ:
@ rauch, как я уже говорил, Substance очень чувствителен к EDT, действительно забыл заменить задачу Model from BackGround без глубоких знаний об EDT и ее правилах единой потоков,
хммм, я пытался сделать это с помощью непосредственного замещения модели, чтобы исключить некоторые из arrayIndexException плюс некоторые исключения из Substance (я забыл, что это месяц назад), * 1024 *
Вы никогда не обманываете это с помощью javax.swing.Timer или SwingWorker, иногда (я думаю, что HightLighter ??? или что-то из Trident.jar отказывается работать правильно ??? и перезапускать очередь EDT) никогда не решали это для деталей,
просто я все обернул (вывод из задания Backgroung в GUI) в AbstractAction
РЕДАКТИРОВАТЬ 2. когда я читаю комментарий @kleopatra
(по ошибке я игнорирую ее совет)
would be my first guess as well - were it not Substance: usually it throws
on not being on the EDT. Plus: s/he states that the first snippet is placed
inside the invokeAndWait to let it run on the EDT
следует ее совету, Sustance
имеет L&f
для SwingX
, а для меня SwingX == kleopatra
, я не могу дать вам обходной путь, потому что я действительно ненавижу invokeAndWait
и я избегаю использования этого метода