|
今天遇到一個(gè)問(wèn)題,就是要在一個(gè)Eclipse插件里顯示JFreeChart的圖形,因?yàn)楹笳呤腔贘ava2D的,要把圖形顯示在SWT應(yīng)用程序里需要利用SWT-AWT橋接器來(lái)實(shí)現(xiàn),雖說(shuō)橋接的方式多半會(huì)伴隨著性能下降,但總歸是一個(gè)解決方法。 代碼并不復(fù)雜,以下是一個(gè)片斷: ![]() public void createPartControl(Composite parent) { parent.setLayout(new FillLayout(SWT.VERTICAL)); Composite drawarea = new Composite(parent, SWT.EMBEDDED); drawarea.setLayout(new FillLayout()); Frame canvasFrame = SWT_AWT.new_Frame(drawarea);![]() canvas = new java.awt.Canvas() {![]() public void paint(Graphics g) { super.paint(g); if (chart != null) chart.draw((Graphics2D) g, getBounds()); } }; canvasFrame.add(canvas); }![]() 關(guān)鍵之處在于SWT_AWT.new_Frame()方法,得到的是一個(gè)java.awt.Frame對(duì)象,要顯示的AWT內(nèi)容都放在它上面就好。 BTW, SWT下免費(fèi)的圖表工具好象很少,只能暫時(shí)先這樣使用JFreeChart了。 Update: 如果要在SWT里顯示帶有動(dòng)畫(huà)效果的AWT圖形,最好在Frame上先放一個(gè)JPanel這樣的帶有雙緩沖的控件,否則圖象在運(yùn)動(dòng)時(shí)會(huì)產(chǎn)生明顯的閃爍。 |
|
|
來(lái)自: 軟件團(tuán)隊(duì)頭目 > 《繪圖》