package edu.ch4;

import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.util.Calendar;
import java.util.Date;

import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.IntervalCategoryDataset;
import org.jfree.data.gantt.Task;
import org.jfree.data.gantt.TaskSeries;
import org.jfree.data.gantt.TaskSeriesCollection;
import org.jfree.data.general.DefaultPieDataset;

public class Test extends ApplicationWindow {

/** *//**
     * Create the application window
     */
    public Test() {
        super(null);
        addToolBar(SWT.FLAT | SWT.WRAP);
        addMenuBar();
        addStatusLine();
    }

/** *//**
     * Create contents of the application window
     *
     * @param parent
     */
    @Override
    protected Control createContents(Composite parent) {
        TabFolder tf = new TabFolder(parent, SWT.TOP);
        TabItem ti = new TabItem(tf, SWT.NULL);
        ti.setText("分类");
        Composite composite = new Composite(tf, SWT.NO_BACKGROUND
                | SWT.EMBEDDED);
        Frame frame = SWT_AWT.new_Frame(composite);
        frame.add(new ChartPanel(createBarChart()));
        ti.setControl(composite);
        TabItem ti1 = new TabItem(tf, SWT.NULL);
        ti1.setText("项目组");
        Composite composite1 = new Composite(tf, SWT.NO_BACKGROUND
                | SWT.EMBEDDED);
        Frame frame1 = SWT_AWT.new_Frame(composite1);
        frame1.add(new ChartPanel(createGanttChart()));
        ti1.setControl(composite1);
        tf.setSelection(0);
        return tf;
    }

/** *//**
     * 方法名称: 内容摘要:
     *
     * @return
     * @return JFreeChart
     * @throws
     */
    private JFreeChart createGanttChart() {
        String title = "Gantt测试";
        IntervalCategoryDataset dataset = createSampleDataset();

JFreeChart jfc = ChartFactory.createGanttChart(title, "项目各阶段详细实施计划",
                "项目周期", dataset, false, false, false);

return jfc;
    }

/** *//**
      * 方法名称:
      * 内容摘要:创建gantt内容
      *
      * @return
      * @return IntervalCategoryDataset
      * @throws
     */
    private IntervalCategoryDataset createSampleDataset() {
        TaskSeries s1 = new TaskSeries("日程表");

Task t1 = new Task("项目立项", date(1, Calendar.APRIL, 2001), date(5,
                Calendar.APRIL, 2001));
        t1.setPercentComplete(1.00);
       
        Task t2 = new Task("项目立项讨论", date(6, Calendar.APRIL, 2001), date(19,
                Calendar.APRIL, 2001));
       
        s1.add(t1);
        s1.add(t2);
       
       
        final Task t3 = new Task(
                "需求分析",
                date(10, Calendar.APRIL, 2001), date(5, Calendar.MAY, 2001)
            );
            final Task st31 = new Task(
                "需求1",
                date(10, Calendar.APRIL, 2001), date(25, Calendar.APRIL, 2001)
            );
            st31.setPercentComplete(1.0);
            final Task st32 = new Task(
                "需求2",
                date(1, Calendar.MAY, 2001), date(5, Calendar.MAY, 2001)
            );
            st32.setPercentComplete(1.0);
            t3.addSubtask(st31);
            t3.addSubtask(st32);
            s1.add(t3);
       
       
       
        final TaskSeriesCollection collection = new TaskSeriesCollection();
        collection.add(s1);

return collection;
    }

/** *//** */
    /** *//**
     * Utility method for creating <code>Date</code> objects.
     *
     * @param day
     *            日
     * @param month
     *            月
     * @param year
     *            年
     *
     * @return a date.
     */
    private static Date date(final int day, final int month, final int year) {

final Calendar calendar = Calendar.getInstance();
        calendar.set(year, month, day);

final Date result = calendar.getTime();
        return result;

}

/** *//**
     * 方法名称: 内容摘要:饼图测试
     *
     * @return
     * @return JFreeChart
     * @throws
     */
    private JFreeChart createBarChart() {
        String title = "空调2002年市场占有率";
        DefaultPieDataset piedata = new DefaultPieDataset();
        piedata.setValue("联想", 27.3);
        piedata.setValue("长城", 12.2);
        piedata.setValue("海尔", 5.5);
        piedata.setValue("美的", 17.1);
        piedata.setValue("松下", 9.0);
        piedata.setValue("科龙", 19.0);
        JFreeChart chart = ChartFactory.createPieChart(title, piedata, true,
                true, true);
        chart.setTitle(new TextTitle(title, new Font("隶书", Font.ITALIC, 15)));
        chart.addSubtitle(new TextTitle("2002财年分析", new Font("隶书", Font.ITALIC,
                12)));
        chart.setBackgroundPaint(Color.white);
        PiePlot pie = (PiePlot) chart.getPlot();
        pie.setBackgroundPaint(Color.white);
        pie.setBackgroundAlpha(0.6f);
        pie.setForegroundAlpha(0.90f);
        return chart;
    }

/** *//**
     * Launch the application
     *
     * @param args
     */
    public static void main(String args[]) {
        try {
            Test window = new Test();
            window.setBlockOnOpen(true);
            window.open();
            Display.getCurrent().dispose();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

/** *//**
     * Configure the shell
     *
     * @param newShell
     */
    @Override
    protected void configureShell(Shell newShell) {
        super.configureShell(newShell);
        newShell.setText("New Application");
    }

/** *//**
     * Return the initial size of the window
     */
    @Override
    protected Point getInitialSize() {
        return new Point(500, 375);
    }

}

AWT之—画图的更多相关文章

  1. Java -- AWT 画图,图像处理

    1. AWT画图  Graphics类  提供绘制简单图形的方法 更新图片时用到 repaint , update , 程序不应该主动调用paint和update, 这两个方法都应该是由AWT系统负责 ...

  2. learning java AWT 画图

    import javax.swing.*; import java.awt.*; import java.util.Random; public class SimpleDraw { private ...

  3. java画图之曲线拖动

    目标:在窗体上按下鼠标按键.然后拖动鼠标,在按下和拖动之间绘制曲线 事件机制 事件源对象:窗体 事件监听方法:addMouseListener(MouseListener l);addMouseMot ...

  4. java画图之初体验

    1.实现画图程序所需的API类 JFrame JButton ActionListener              动作事件接口 ActionEvent                        ...

  5. Java画图程序设计

    本文讲述一个画图板应用程序的设计,屏幕抓图如下: 『IShape』 这是所有图形类(此后称作模型类)都应该实现接口,外部的控制类,比如画图板类就通过这个接口跟模型类“交流”.名字开头的I表示它是一个接 ...

  6. java画图程序_图片用字母画出来_源码发布_版本二

    在上一个版本:java画图程序_图片用字母画出来_源码发布 基础上,增加了图片同比例缩放,使得大像素图片可以很好地显示画在Notepad++中. 项目结构: 运行效果1: 原图:http://imag ...

  7. java画图程序_图片用字母画出来_源码发布

    在之前写了一篇blog:java画图程序_图片用字母画出来 主要是把一些调试的截图发布出来,现在程序调试我认为可以了(当然,你如果还想调试的话,也可以下载源码自己调试). 就把源码发布出来. 项目结构 ...

  8. Java中的AWT进阶

    围棋 package ch11; /** * Created by Jiqing on 2016/12/4. */ import java.awt.*; import javax.swing.*; i ...

  9. Java SE (2)之 Graphics 画图工具

    Graphics 绘图类: 提供两个方法.Paint (绘图,被系统自动调用)    repaint(重绘) Paint 调用原理(1.窗口最大化,再最小化 窗口的大小发生变化 Repaint函数被调 ...

随机推荐

  1. Eclipse+Maven 项目创建

    ★:jar包下载不了的话可能是镜像里没有这个版本,换个低版本的就行 ★:eclipse工程validating很慢,可以先关掉验证(一般对项目没什么影响) ★:eclipse工程pom.xml文件报错 ...

  2. [BZOJ 2510]弱题

    2510: 弱题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 419  Solved: 226[Submit][Status][Discuss] D ...

  3. [NOIP 2011] 聪明的质检员

    聪明的质检员 描述 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从1到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是:1.给定m个区间[Li,Ri ...

  4. git团队操作

    1.git命令行 1)分支的创建 git branch 分支名 分支创建之后,就会自动pull master的内容 2)分支的查询 git branch 3)分支的进入 git checkout 分支 ...

  5. Redis数据的底层存储原理

    redis底层是用什么结构来存储数据的呢? 我们从源码上去理解就会容易的多:   redis底层是使用C语言来编写的,我们可以看到它的数据结构声明.一个 dict 有两个dictht,一个dictht ...

  6. API接口数据自检

    这个周末的娱乐,通用模块,让后端自检,严格客户端按照文档的要求来,妈妈再也不担心我加班了,对某些团队来说,可能根本用不着,本是想到就尝试一把而已. 哎,傻X的客户端程序员,时间都去推辞扯淡打扮啦,好好 ...

  7. Template-Driven Forms 模板驱动式表单

    Angular 4.x 中有两种表单: Template-Driven Forms - 模板驱动式表单 (类似于 AngularJS 1.x 中的表单 ) Reactive Forms - 响应式表单 ...

  8. JavaScript的DOM_通过计算后样式来获取

    虽然可以通过 style 来获取单一值的 CSS 样式,但对于复合值的样式信息,就需要通过计算样式来获取. DOM2 级样式,window 对象下提供了 getComputedStyle()方法.接受 ...

  9. shell基础之脚本执行,命令别名以及快捷键等

    脚本执行方式 比如我们在/root/下编写了一个脚本,名字为hello.sh.那么怎么调用执行它呢?有两种办法: (1)直接通过bash,如下: bash  hello.sh 注:采用bash执行脚本 ...

  10. 【[ZJOI2008]泡泡堂】

    想贪心就是反复\(hack\)自己的过程 首先这很田忌赛马,但是又不完全一样 田忌赛马保证了所有马的实力不同,因此没有平局 田忌赛马的策略是当自己最强的马比不过对方最强的马的时候,就用自己最弱的马来自 ...