我想在我的Java應用程序中使用F庫,所以我下載了.jar文件並將它們添加到項目類路徑中。然後,我想設置爲L &的F應用程序的main()
功能是這樣的:物質L&F不工作
SwingUtilities.invokeAndWait(new Runnable()
{
@Override
public void run()
{
try
{
// Substance
String skin = "org.pushingpixels.substance.api.skin.SubstanceGraphiteAquaLookAndFeel";
SubstanceLookAndFeel.setSkin(skin);
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
}
catch(Exception e)
{
System.err.println("Can't initialize specified look&feel");
e.printStackTrace();
}
}
});
正在創建的JFrame之前做到這一點。然而,即使沒有拋出異常,也沒有任何反應,GUI以默認方式呈現。Swing L & F.
任何想法我在這裏失蹤?
編輯
取而代之的是SubstanceLookAndFeel.setSkin(skin);
呼叫我UIManager.setLookAndFeel(skin);
嘗試它,而不是。這仍然無法正常工作,但至少現在我得到一個異常:
org.pushingpixels.substance.api.UiThreadingViolationException:
狀態跟蹤必須在事件調度線程來完成
是不是通過調用invokeAndWait()
來解決這個問題?
EDIT-2
好的,所以問題有所不同。在創建JTable
時拋出異常,而不是在設置L & F.時,我能夠通過EventQueue.invokeLater()
調用JFrame
構造函數(然後基本上運行整個應用程序)來正確地呈現該問題 - L & F已正確呈現。但是我從來沒有這樣做過,是否以這種方式「保存」(用Java術語來說是有效的)?
調用'SwingUtilities.invokeLater()'以確保它會在EventDispatchThread – nachokk
@nachokk叫:我通過'invokeAndWait(這樣做)',但即使'的invokeLater ()'我得到同樣的異常。 – Matthias