<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    白日不到處,青春恰自來。
    苔花如米小,亦學牡丹開。
    posts - 4,  comments - 34,  trackbacks - 0

         這段時間一直比較忙,答應幫朋友完善的一個RCP畢業設計,直到這兩天才有時間動手。這個RCP有生成報表的需求,首先想到的是JFreeChart和BIRT的Chart引擎。因為對JFreeChart比較熟悉,就選擇用它做報表。

    ChartView.java創建一個View類,這里JFreeChart報表參考了SWTTimeSeriesDemo,當然之前得首先加入jfreechart-1.0.5.jar、jfreechart-1.0.5-swt.jar和jcommon1.0.9.jar。

    /**
     * 
    @author zyh2k
     *
     
    */

    public class ChartView extends ViewPart {
        
    private ChartComposite frame;

        
    /* (non-Javadoc)
         * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
         
    */

        @Override
        
    public void createPartControl(Composite parent) {
            
    // TODO Auto-generated method stub

                 
    final JFreeChart chart = createChart(createDataset());
                
    /*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");
    */

                frame 
    = new ChartComposite(parent, SWT.NONE, chart, true);
                FillLayout fillLayout 
    = new FillLayout();
                 fillLayout.type 
    = SWT.VERTICAL;
                frame.setLayout(fillLayout);
                frame.setSize(
    600300);
                
                frame.setDisplayToolTips(
    true);
                frame.setHorizontalAxisTrace(
    false);
                frame.setVerticalAxisTrace(
    false);
                
    /*shell.open();
                while (!shell.isDisposed()) {
                    if (!display.readAndDispatch())
                        display.sleep();
                }
    */


        }

        
        
    /**
         * 用戶退出時,將面板隱藏
         
    */

        
    public void logoff() {
            
    if (frame != null && !frame.isDisposed())
                frame.setVisible(
    false);
        }

        
    /**
         * 顯示面板內容
         
    */

        
    public void show() {
            
    if (frame != null && !frame.isDisposed())
                frame.setVisible(
    true);
        }


        
    /* (non-Javadoc)
         * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
         
    */

        @Override
        
    public void setFocus() {
            
    // TODO Auto-generated method stub

        }

        
        
    /**
         * Creates a chart.
         * 
         * 
    @param dataset  a dataset.
         * 
         * 
    @return A chart.
         
    */

        
    private static JFreeChart createChart(XYDataset dataset) {

            JFreeChart chart 
    = ChartFactory.createTimeSeriesChart(
                
    "宿舍水電費月報表",  // title
                "日期",             // x-axis label
                "費用",   // y-axis label
                dataset,            // data
                true,               // create legend?
                true,               // generate tooltips?
                false               // generate URLs?
            );

            chart.setBackgroundPaint(Color.white);

            XYPlot plot 
    = (XYPlot) chart.getPlot();
            plot.setBackgroundPaint(Color.lightGray);
            plot.setDomainGridlinePaint(Color.white);
            plot.setRangeGridlinePaint(Color.white);
            plot.setAxisOffset(
    new RectangleInsets(5.05.05.05.0));
            plot.setDomainCrosshairVisible(
    true);
            plot.setRangeCrosshairVisible(
    true);
            
            XYItemRenderer r 
    = plot.getRenderer();
            
    if (r instanceof XYLineAndShapeRenderer) {
                XYLineAndShapeRenderer renderer 
    = (XYLineAndShapeRenderer) r;
                renderer.setBaseShapesVisible(
    true);
                renderer.setBaseShapesFilled(
    true);
            }

            
            DateAxis axis 
    = (DateAxis) plot.getDomainAxis();
            axis.setDateFormatOverride(
    new SimpleDateFormat("MMM-yyyy"));
            
            
    return chart;

        }

        
        
    /**
         * Creates a dataset, consisting of two series of monthly data.
         *
         * 
    @return The dataset.
         
    */

        
    private static XYDataset createDataset() {
            
            TimeSeriesCollection dataset 
    = new TimeSeriesCollection();
            
            DbOperate db 
    = DwesFactory.getDbOperate();
            List rooms 
    = db.getRoomAll();
            List datas 
    = db.getScoreAll();
            
            
    for (Iterator iter = rooms.iterator(); iter.hasNext();) {
                String room 
    = (String) iter.next();
                TimeSeries roomSeries 
    = new TimeSeries(room, Month.class);
                
    for (Iterator dataIter = datas.iterator(); dataIter.hasNext();) {
                    Score score 
    = (Score) dataIter.next();
                    
    if(score.getName().equals(room)) {
                        
    int[] dataObj = DateUtils.getNowSingleObject(score.getMonth());
                        roomSeries.add(
    new Month(dataObj[1], dataObj[2]), score.getScore());
                    }

                    
                }

                dataset.addSeries(roomSeries);
            }

            
            
    return dataset;
        }


    }

    NavigatorView.java調用ChartView

                    /**
             * 結點雙擊事件
             
    */

            
    private class MyDoubleClickListener implements IDoubleClickListener {
                
    public void doubleClick(DoubleClickEvent event) {
                    IStructuredSelection sel 
    = (IStructuredSelection) event.getSelection();
                    NavigatorEntry entry 
    = (NavigatorEntry) sel.getFirstElement();
                    
    // 取得IWorkbenchPage            
                    IWorkbenchPage workbenchPage = getViewSite().getPage();
                    
    if(entry.getName().equals("報表輸出")){
                        String viewId 
    = ChartView.class.getName();
                        ChartView view;
                        
    try {
                            view 
    = (ChartView) workbenchPage.showView(viewId);
                            view.show();
    //顯示面板內容
                        }
     catch (PartInitException e) {
                            
    // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                        
                    }
     else {
                        IEditorInput editorInput 
    = entry.getEditorInput();
                        String editorID 
    = entry.getEditorId();
                        
    // 如果editorInput或editorID為空則中斷返回
                        if (editorInput == null || editorID == null)
                            
    return;
                        
    //搜索使用editorInput對象對應的編輯器
                        IEditorPart editor = workbenchPage.findEditor(editorInput);
                        
    // 如果此編輯器已經存在,則將它設為當前編輯器,否則重新打開一個編輯器。
                        if (editor != null{
                            workbenchPage.bringToTop(editor);
                        }
     else {
                            
    try {
                                editor 
    = workbenchPage.openEditor(editorInput, editorID);
                            }
     catch (PartInitException e2) {
                                e2.printStackTrace();
                            }

                        }

                    }

                }

            }



    plugin.xml

     <!-- 加入視圖 -->
       
    <view
                
    name="報表視圖"
                icon
    ="icons/project.gif"
                category
    ="cn.com.wen.dwes.view"
                class
    ="cn.com.wen.dwes.archive.ChartView"
                id
    ="cn.com.wen.dwes.archive.ChartView">
          
    </view>
       
    </extension>


    MANIFEST.MF加入引用的包

    Bundle-ClassPath: dwes.jar,
     lib/mysql-connector-java-
    5.0.3-bin.jar,
     lib/jcommon-
    1.0.9.jar,
     lib/jfreechart-
    1.0.5.jar,
     lib/jfreechart-
    1.0.5-swt.jar

    運行的效果


    運行時把鼠標可以報表上左右拖動或選擇一個區域放大,有點像BIRO報表的向下鉆取。由于SWT的JFreeChart目前還是experimental,想把它運用在商業化項目的朋友慎重考慮。
    posted on 2007-06-07 10:03 凍僵的魚 閱讀(3200) 評論(1)  編輯  收藏

    FeedBack:
    # re: 在Eclipse RCP中使用JFreeChart報表
    2008-05-09 17:35 | jll
    能不能給我JreeChart的包?最好附上安裝步驟.謝謝!我自己下了一個,但好像不起作用.我的郵箱是jianglili29@126.com  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    <2007年6月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(3)

    隨筆檔案(4)

    相冊

    搜索

    •  

    積分與排名

    • 積分 - 14063
    • 排名 - 2060

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日韩视频免费在线| 亚洲色一区二区三区四区| 免费黄色大片网站| 免费日本一区二区| 特色特黄a毛片高清免费观看| 亚洲性猛交xx乱| 国产AV无码专区亚洲精品| 亚洲精品视频在线观看你懂的| 大学生一级毛片免费看| 污视频在线观看免费| 中文字幕av无码不卡免费| 麻豆一区二区三区蜜桃免费| 亚洲91精品麻豆国产系列在线| 亚洲国产精品久久久久网站| 精品亚洲成α人无码成α在线观看| 日韩免费观看视频| 女人18毛片水最多免费观看| 免费在线观看h片| 99爱在线精品视频免费观看9| a级毛片无码免费真人久久| 久久久精品视频免费观看| 免费无码专区毛片高潮喷水 | 免费无码又爽又黄又刺激网站| 亚洲一区二区三区国产精华液| 亚洲免费在线观看视频| 亚洲福利电影在线观看| 97se亚洲综合在线| 亚洲色图国产精品| 中文字幕亚洲综合精品一区| 亚洲四虎永久在线播放| 久久久久久久综合日本亚洲| 亚洲AV无码一区东京热| 亚洲AV美女一区二区三区| 亚洲不卡av不卡一区二区| 亚洲成亚洲乱码一二三四区软件| 国产国拍亚洲精品mv在线观看| 亚洲热妇无码AV在线播放| 亚洲AV无码乱码国产麻豆穿越| 亚洲国产美国国产综合一区二区| 日韩亚洲AV无码一区二区不卡| 亚洲最新视频在线观看|