黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

在SWT中使用ChartDirector

系統 2283 0
昨天晚上看到有人詢問,回答一下。

因為JFrame繼承自Frame,是父子關系,所以Frame不能強轉為JFrame使用。但是,卻有取巧的方法令SWT操作Swing~

//JFrame實例
JFrame frame = new JFrame();
//獲得容器
Container container = frame.getContentPane();
//畫布
Canvas canvas = new Canvas();
//容器加載畫布
container.add(canvas,BorderLayout.CENTER);
//顯示
frame.setVisible(true);
//獲得Display
Display display = new Display();
//轉換canvas不就得了~~~為什么能轉換?看看Frame繼承自誰就知道了……
Shell shell = SWT_AWT.new_Shell(display,canvas);
//布局
shell.setLayout(new FillLayout());
//SWT按鈕加載
Button button = new Button(shell,SWT.PUSH);
button.setText("SWT使用JFrame");
shell.pack();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()){
display.sleep ();
}
}


另外,再說一種利用new_Frame的方式,先寫一個ChartDirector例子,應用了兩個類。

DemoModule
... .java

package org.test.chartdir;

/***/ /**
*<p>
*Title:LoonFramework
*</p>
*<p>
*Description:
*</p>
*<p>
*Copyright:Copyright(c)2007
*</p>
*<p>
*Company:LoonFramework
*</p>
*
*
@author chenpeng
*@email:ceponline@yahoo.com.cn
*
@version 0.1
*/

public interface DemoModule ... {

public StringtoString();

public int getNoOfCharts();

public void createChart(ChartDirector.ChartViewerviewer, int index);

}


CakyDemo.java

package org.test.chartdir;

import ChartDirector.ChartViewer;
import ChartDirector.PieChart;

/***/ /**
*<p>Title:LoonFramework</p>
*<p>Description:</p>
*<p>Copyright:Copyright(c)2007</p>
*<p>Company:LoonFramework</p>
*
@author chenpeng
*@email:ceponline@yahoo.com.cn
*
@version 0.1
*/

public class CakyDemo implements DemoModule ... {

public StringtoString() ... { return " ChartDirector餅圖 " ;}

public int getNoOfCharts() ... { return 2 ;}

public void createChart(ChartViewerviewer, int index)
... {
int angle = 0 ;
boolean clockwise = true ;
if (index != 0 ) ... {
angle
= 90 ;
clockwise
= false ;
}


double []data = ... { 25 , 18 , 15 , 12 , 8 , 30 , 35 } ;

String[]labels
= ... { " Labor " , " Licenses " , " Taxes " , " Legal " , " Insurance " ,
" Facilities " , " Production " }
;

PieChartc
= new PieChart( 280 , 240 );


c.setPieSize(
140 , 130 , 80 );

if (clockwise) ... {
c.addTitle(
" Start " + angle);
}
else ... {
c.addTitle(
" Start " + angle);
}


c.setStartAngle(angle,clockwise);

c.set3D();

c.setData(data,labels);

c.setExplode(
0 );

viewer.setImage(c.makeImage());

viewer.setImageMap(c.getHTMLImageMap(
" clickable " , "" ,
" title='{label}:US${value}K({percent}%)' " ));
}


}



我構建一個ShellSwingToSWT.java用作演示:

package org.test.chartdir;

import java.awt.BorderLayout;

import java.awt.Canvas;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;

import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import ChartDirector.ChartViewer;

/***/ /**
*<p>
*Title:LoonFramework
*</p>
*<p>
*Description:
*</p>
*<p>
*Copyright:Copyright(c)2007
*</p>
*<p>
*Company:LoonFramework
*</p>
*
*
@author chenpeng
*@email:ceponline@yahoo.com.cn
*
@version 0.1
*/

public class ShellSwingToSWT ... {

public static void main(String[]args) ... {

int width = 600 ;

int height = 400 ;
// ChartDirector測試
DemoModuledemo = new CakyDemo();

JFrameframe
= new JFrame(demo.toString());

frame.addWindowListener(
new WindowAdapter() ... {
public void windowClosing(WindowEvente) ... {
System.exit(
0 );
}

}
);
frame.getContentPane().setLayout(
new FlowLayout(FlowLayout.LEFT));
frame.setSize(width,height);

for ( int i = 0 ;i < demo.getNoOfCharts(); ++ i) ... {
ChartViewerviewer
= new ChartViewer();
demo.createChart(viewer,i);
frame.getContentPane().add(viewer);
}


// 獲得容器
Containercontainer = frame.getContentPane();

Displaydisplay
= new Display();

Shellshell
= new Shell(display,SWT.CLOSE);
shell.setSize(
new Point(width,height));
shell.setLayout(
new FillLayout());
shell.setText(
" ChartDirectorinSWT " );
// 新建swt組件
Compositecomposite = new Composite(shell,SWT.NO_BACKGROUND
| SWT.EMBEDDED);
// 注入組件,并返回為frame
Framefrm = SWT_AWT.new_Frame(composite);
// 加載容器
frm.add(container);
// 打開shell
shell.open();
while ( ! shell.isDisposed()) ... {
if ( ! display.readAndDispatch()) ... {
display.sleep();
}


}

}


}


其實也沒什么可說的,只不過利用轉換后的Frame載入JFrame的
container罷了。

這兩種方式都可以實現Swing在SWT中的顯示

在SWT中使用ChartDirector

只不過第一種利用Swing窗體的hWnd實例,一種在新建窗體中顯示Frame罷了。

關于AWT/Swing在SWT中顯示的原理其實很簡單,為此昨天還寫了個在AWT/Swing實現SWT功能的例子,一會有時間整理下發上來。

在SWT中使用ChartDirector


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論