`
wenhai_zhang
  • 浏览: 185896 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在SWT里显示AWT对象 - 八进制 - 博客园(转载)

    博客分类:
  • java
阅读更多

今天遇到一个问题,就是要在一个Eclipse插件里显示JFreeChart的图形,因为后者是基于Java2D的,要把图形显示在SWT应用程序里需要利用SWT-AWT桥接器来实现,虽说桥接的方式多半会伴随着性能下降,但总归是一个解决方法。

代码并不复杂,以下是一个片断:

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);
}

关键之处在于SWT_AWT.new_Frame()方法,得到的是一个java.awt.Frame对象,要显示的AWT内容都放在它上面就好。

BTW, SWT下免费的图表工具好象很少,只能暂时先这样使用JFreeChart了。

Update: 如果要在SWT里显示带有动画效果的AWT图形,最好在Frame上先放一个JPanel这样的带有双缓冲的控件,否则图象在运动时会产生明显的闪烁。

posted on 2005-07-17 23:10 八进制 阅读(2921) 评论(6)  编辑 收藏 网摘 所属分类: Java

 

评论

 

#1  2005-09-13 17:14 YYQQ [未注册用户]

不知道您是否遇到过这样的需求:要在一个GEFEditor中显示SWT控件?这时该怎么办呢?
  回复  引用    

 

#2 [楼主] 2005-09-13 22:53 八进制      

其实现在我就在为一个类似的问题烦恼,而且我还没有想出什么好办法。
Draw2d
里倒有一些简单的控件(Clickable的子类)可以放在editor里,我想你多半也知道了。
  回复  引用  查看    

 

#3  2005-09-14 12:14 YYQQ [未注册用户]

这个我已作过试验。感觉这些控件较难控制,需要设置太多的东西。另外,还缺少如TableTree等对象,如果自己做也是很麻烦。苦恼中
  回复  引用    

 

#4  2006-05-29 17:29 baal [未注册用户]

八进制你好,我想问下如何在得到或判断出table中看不见的column?
  回复  引用    

 

#5  2006-10-31 15:52 路过 [未注册用户]

canvas = new java.awt.Canvas() {
public void paint(Graphics g) {
super.paint(g);
if (chart != null)
chart.draw((Graphics2D) g, getBounds());
}
};
canvasFrame.add(canvas);
___________________________________________________________
干吗不这样呢?

canvasFrame.add(new ChartPanel(chart));

分享到:
评论
1 楼 wenhai_zhang 2010-06-26  
private Group group;

private TabFolder tabFolder;

private TabItem basicItem;

private DTNBIComposite basicComposite;

private TabItem advanceItem;

private DTNBIComposite advanceComposite;

private Map<String,DTNBIComposite> composites = new HashMap<String, DTNBIComposite>();

@Override
protected Control createContents(Composite parent) {

// 设置为模式窗体
this.setShellStyle(SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
super.createContents(parent);
initDialog(parent);
return parent;
}

@Override
protected Control createDialogArea(Composite parent) {
super.createDialogArea(parent);
//Composite container = createComposite(parent, "text");
Composite container = new Composite(parent,SWT.NONE);
initLayout(container);

Text text = new Text(container,SWT.NONE);
container.setCursor(Cursor.win32_new(null, 5));
text.setSize(200, 23);
// Composite ui = new DTTEXTMainComposite(container,SWT.NONE);
GridLayout gridLayout = new GridLayout(2,true);
GridData data = new GridData(GridData.FILL_BOTH, GridData.CENTER, true, false, 1, 1);
tabFolder = new TabFolder(container.getShell(),SWT.NONE);
tabFolder.setCursor(Cursor.win32_new(null, 3));
tabFolder.setBounds(5, 5, 640, 480);
basicItem = new TabItem(tabFolder,SWT.NONE);
basicItem.setText("基本配置");
Group exportGroup = new Group(tabFolder,SWT.None);
exportGroup.setText("导出时间设置");
exportGroup.setLayout(gridLayout);
Label lblExportTime = new Label(exportGroup,SWT.NONE);
lblExportTime.setText("导出时间:");
lblExportTime.setData(data);
Text txtExportTime = new Text(exportGroup,SWT.NONE);
txtExportTime.setSize(200, 23);
lblExportTime.setData(data);

Group directoryGroup = new Group(tabFolder,SWT.None);
directoryGroup.setText("导出目录设置");
Label lblExportdirc = new Label(directoryGroup,SWT.NONE);
lblExportdirc.setText("导出路径(绝对路径):");
lblExportTime.setData(data);
Text txtExportdirc = new Text(exportGroup,SWT.NONE);
txtExportdirc.setSize(200, 23);
lblExportTime.setData(data);

advanceItem = new TabItem(tabFolder,SWT.NONE);

相关推荐

    swt运行所需的dll

    swt运行时所需的dll文件,包括swt-awt-win32-3236.dll swt-gdip-win32-3236.dll swt-win32-3229.dll swt-win32-3236.dll

    swt-win32-3236.dll

    jface/swt windows系统中所需动态链接库

    swt-win64-3.6.2.jar

    SWT(Standard Widget Toolkit)是Java编程中的一种GUI工具包,它的设计目标是提供比AWT和Swing更高效的性能,同时保持跨平台的能力。SWT利用本地系统资源来创建窗口、按钮、文本框等控件,从而实现更快的渲染速度和...

    DJNativeSwing-SWT-0-9-8

    《DJNativeSwing-SWT-0-9-8:Swing与 SWT 的融合与实践》 在Java开发领域,Swing和SWT是两种常用的GUI(图形用户界面)工具包,各自有着独特的特性和优势。DJNativeSwing-SWT-0-9-8是一个开源项目,它致力于将Swing...

    swt-3.7.2-gtk-linux-x86 .zip

    SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。由于官网下载的速度特的慢,所以在此奉献一份给大家。希望对你有...

    swt-4.2.1-gtk-linux-x86.zip

    SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。由于在官网下载的速度特别慢,所以在这里特别奉献一份给大家。

    SWT-JFace-3.5-API.chm.7z

    相比Java的默认GUI库AWT和Swing,SWT具有更好的性能和更接近操作系统原生界面的外观。SWT的核心组件包括按钮、文本框、滚动条、表格等,它们都直接映射到操作系统提供的相应控件,确保了与操作系统的无缝集成。 接...

    如何在SWT中使用AWT、SWING组件

    在Java编程环境中,SWT(Standard Widget Toolkit)和AWT(Abstract Window Toolkit)以及SWING是三种常用的图形用户界面(GUI)开发库。SWT主要为Eclipse IDE提供支持,而AWT和SWING则是Java标准库的一部分。这篇...

    swt-3.8M5-win32-win32-x86

    SWT(Standard Widget Toolkit)是Java编程环境中一个用于创建用户界面的开源库,它是Eclipse项目的组成部分,主要用于替代Java标准库中的AWT和Swing组件。"swt-3.8M5-win32-win32-x86"是SWT的一个特定版本,针对...

    DJNativeSwing-SWT.jar、DJNativeSwing.jar、swt-win-x64.jar

    DJNativeSwing-SWT.jar是这个库的核心,它实现了将SWT组件集成到Swing应用中的桥梁,使得开发者可以在一个应用中同时利用Swing和SWT的优点。 DJNativeSwing.jar是DJProject的主要库,它包含了一系列用于构建混合...

    图形界面开发--AWT,Swing,SWT

    在Java中,主要有三个库用于创建GUI:Abstract Window Toolkit (AWT)、Swing和Standard Widget Toolkit (SWT)。下面将详细阐述这三个库的特点、用途以及它们之间的差异。 ### AWT(Abstract Window Toolkit) AWT是...

    swt_awt桥接 swt_awt桥接

    今天遇到一个问题,就是要在一个Eclipse插件里显示JFreeChart的图形,因为后者是基于Java2D的,要把图形显示在SWT应用程序里需要利用SWT-AWT桥接器来实现,虽说桥接的方式多半会伴随着性能下降,但总归是一个解决...

    Java的GUI设计-AWT基础-窗口类-AWT基本组-bb--Read.ppt

    在Java 1.0版本中,AWT的目标是创建一个跨平台的GUI框架,允许程序员编写能够在不同操作系统上运行的GUI应用。然而,初期的AWT并未完全实现这一目标,因为它在不同平台上的表现并不一致。从Java 1.1开始,这一情况...

    swt-deginer - plugins-2(共5 部分)

    SWT允许开发者创建桌面应用程序,而无需受限于Java的Abstract Window Toolkit (AWT) 或 Swing。 2. JFace:JFace是建立在SWT之上的高级UI框架,它简化了SWT的使用,提供了数据绑定、视图、对话框和表单构建等高级...

    SWT-JFace-3.4-API

    SWT 的优势在于其高效性,因为它避免了Java AWT 和 Swing 中的抽象层,直接利用了操作系统提供的原生组件。 JFace 是建立在 SWT 之上的更高层次的抽象,它为 SWT 提供了一种模型-视图-控制器(MVC)的编程模型。...

    swt-3.5.2-gtk-linux-x86_64.zip

    SWT (Standard Widget Toolkit) 是一个开放源代码的Java库,用于在Java应用程序中创建原生用户界面。这个"swt-3.5.2-gtk-linux-x86_64.zip"压缩包包含了SWT的3.5.2版本,专为64位Linux系统与GTK+图形库构建。GTK+是...

    swt-win32-3235

    4. swt-awt-win32-3235.dll:此文件提供了SWT与Java AWT之间的桥接,允许开发者在SWT应用中集成或与AWT组件交互。 5. swt.jar:这是一个Java类库文件,包含了SWT的所有Java类,开发者在编写Java代码时会导入这个库...

    swt-3.6M3-win32-win32-x86.jar

    - **初始化**:在创建SWT应用时,必须先调用`Display`类的`getSystemDisplay()`方法获取显示器对象,然后才能创建窗口和其他组件。 - **资源管理**:SWT组件创建后,需要正确地释放资源,避免内存泄漏。通常在关闭...

    book-pro-java-swt-src-01-2005.zip_beginners

    本资源"book-pro-java-swt-src-01-2005.zip"特别针对初学者,提供了SWT和JFace的实例代码,帮助新手快速掌握这两个库的使用。 SWT是Eclipse基金会开发的一个开源GUI库,它直接与操作系统进行交互,提供了高性能、...

    SWT程序高手秘笈--英文原版

    这一组组件可以用来在Java上开发图形用户界面,并提供了Java Swing与AWT组件的原生代码替代选项。SWT结合了所运行的平台上的外观与操作感受来提供快速构建GUI的方法,并让它们看起来确实就像是属于所运行的平台。

Global site tag (gtag.js) - Google Analytics