zoukankan      html  css  js  c++  java
  • 在SWT里显示AWT对象

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

  • 相关阅读:
    PCL利用RANSAC自行拟合分割平面
    HDU 3062 && HDU 1824 && POJ 3678 && BZOJ 1997 2-SAT
    BZOJ 3670 && BZOJ 3620 && BZOJ 3942 KMP
    BZOJ 1500 Splay 全操作
    Manacher
    POJ 2155 2维线段树 || 2维BIT
    BZOJ 1015 并查集+离线倒序
    NOI Linux JAVA
    UVA 10407 差分思想的运用
    BZOJ 1969 树链剖分+Tarjan缩点
  • 原文地址:https://www.cnblogs.com/bjzhanghao/p/194710.html
Copyright © 2011-2022 走看看