我正在使用Java3D和Jmol(它是3D中化學結構的查看器)的項目。我必須創建能夠在Java3D和Jmol表示結構之間切換的視圖。交換JPanel內容時閃爍
我已經設法做到了這一點,但是當我將JPanel與JmolPanel和Canvas3D交換在其中時,我得到了交換區域的閃爍。
我只是換板做:
public static void changeView(JPanel c) {
c.removeAll();
if (var) {
c.add(canvas);
} else {
c.add(jmolPanel);
}
c.revalidate();
var = !var;
}
創建與按鈕用於交換板架可以在這裏找到的代碼示例:http://pastebin.com/3F2gKBgb
要運行這個例子,你需要Jmol的。 jar(可以在這裏找到http://jmol.sourceforge.net/download/)和Java3D(http://java3d.java.net/binary-builds.html)
我試着在JPanels中設置雙緩衝,但它沒有幫助。你有什麼想法如何解決閃爍的問題?
看來我還需要一臺Windows PC來運行該代碼(我的Mac沒有C:/驅動器)。這就是說,看看'CardLayout'類設計用於在不同視圖之間切換 – Robin
@Robin它只是j3dcore-ogl.dll文件(Java3D安裝)的路徑。如果你將它交換到Mac路徑,它可能會工作(或者你根本不需要這個 - 也許這只是我的配置問題)。 我按照你的建議改變了佈局,但我仍然閃爍。代碼現在改變我的面板的內容是這樣的(我不知道,如果你可以用它做更多的事情): \t'公共靜態無效changeView(JPanel中C){ \t \t CardLayout CL =(CardLayout)c.getLayout ();如果(var){ } \t \t if(var)cl.show(c,「canvas」); (c,「jmol」);其他{ \t}其他{ \t \t} \t \t var =!var; \t}' – lasjak
如果我記得正確(它開始一段時間),3D畫布往往是沉重的重量組件。閃爍可能是批量重和輕重量組件之間的轉換,如果是這樣,可能沒有任何人可以做。確保您在I內切換組件。EDT – MadProgrammer