zoukankan      html  css  js  c++  java
  • SWT_AWT加载JFreeChart在Window8下显示不出JFreeChart的问题

      今天终于把Window8上显示JFreeChart的问题解决了,需求是在SWT中使用JFreeChart,但JFreeChart要使用AWT的样式,不能使用SWT的样式(ChartComposite),即要使用SWT_AWT桥接来实现SWT中显示JFreeChart。

      桥接的方式实现的JFreeChart在Win7上没问题,能直接显示出来,但是在Window 8上第一次加载要很长时间,而且显示不出JFreeChart。使用JFreeChart的swt例子的代码改进改成SWt_AWT测试也是同样问题,main方法中代码如下:

      fianel JFreeChart chart = ChartFactory.createTimeSeriesChart(
        "Legal & General Unit Trust Prices", // title
        "Date", // x-axis label
        "Price Per Unit", // y-axis label
        dataset, // data
        true, // create legend?
        true, // generate tooltips?
        false // generate URLs?
      );

      final Display display = new Display();

      Shell shell = new Shell(display);
      shell.setSize(600, 300);
      shell.setLayout(new FillLayout());
      shell.setText("Time series demo for jfreechart running with SWT");

      Composite comp = new Composite(shell, SWT.EMBEDDED);//SWT.EMBEDDED必须
      java.awt.Frame frame = SWT_AWT.new_Frame(comp);

      ChartPanel chartPanel = new ChartPanel(chart);
      frame.add(chartPanel);

      shell.open()
      while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
          display.sleep();
      }

    这样写Window8第一次打开会很卡,具体原因不知道,之后点击下界面JFreeChart会出现。花了一个星期的时间来看这个问题,想过以下方法:

    1、通过给comp加CtrolEvent事件监听,然后模拟AWT的MosueEvent发给ChartPanel,来实现模拟点击,发现不是每次都有效。

    2、先打开SWt的窗口,在窗口打开后向frame中添加chartPanel,在frame和chartPanel中间加一个JPanel,该方法在打开的时候能正常显示,窗口最大化时,如果JPanel没有添加布局没问题,添加了布局导致chartPanel会在最大化过程中刷新,就会出现JFreeChart不显示的情况。

    最后都没招到好的方法,看了下往上说的加载JFreeChart有时确实会很卡,把ChartPanel的userBuffered标记设为false,就能快点。试了下没想到真的有用。修改代码如下:

       ChartPanel chartPanel = new ChartPanel(chart,false);

    这个问题看了三天都没解决出来,今天都不想解决了,随便看了下网上相关的文章,试了下就解决了,哎,想起那句话“没多学一点知识,就少写一行代码”。花了那么多时间,最后仅仅是一个false的问题,真是好笑,生活的乐趣在于一个接着一个的惊喜,你永远不知道下一秒会发生什么,如果知道了还有什么意思呢。

    每多学一点知识,就少写一行代码。
  • 相关阅读:
    Hbase调用JavaAPI实现批量导入操作
    spring-quartz定时任务使用小结
    Cocos2d-x JSB 自己主动绑定bindings
    CentOS 6.x安装多GCC版本号,cmake的安装与使用
    PPAPI+Skia实现的涂鸦板
    UVA
    [ExtJS5学习笔记]第三十四节 sencha extjs 5 grid表格之java后台导出excel
    文本分析之中文分词
    cocos2d-x创建精灵动画
    美国L1签证申请的常见问题解析
  • 原文地址:https://www.cnblogs.com/guanmu/p/4174823.html
Copyright © 2011-2022 走看看