在SWT里显示AWT对象【八进制】

本文介绍如何在Eclipse插件中利用SWT-AWT桥接器显示JFreeChart图表,通过创建特定的Composite组件并使用SWT_AWT.new_Frame()方法实现图表的展示。此外还提供了一些关于提高显示性能的建议。

http://www.cnblogs.com/bjzhanghao/archive/2005/07/17/194710.html

今天遇到一个问题,就是要在一个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这样的带有双缓冲的控件,否则图象在运动时会产生明显的闪烁。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值