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. December 17th 2016 Week 51st Saturday

    Great minds have purpose, others only have wishes. 杰出的人有着目标,其他人只拥有愿望. Are you clear about the differ ...

  2. 为什么JS中0.1+0.2 != 0.3

    为什么JS中0.1+0.2 != 0.3 在我曾经的一篇< javascript入门教程 (2) >中,讲到JS中数字运算时,我们提到过一个叫做 数字运算中的精度缺失的问题,当时我们只是简 ...

  3. 解析Java对象的equals()和hashCode()的使用

    解析Java对象的equals()和hashCode()的使用 前言 在Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个.在多 ...

  4. jwplayer视频--不兼容IE8

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. URAL-1018 Binary Apple Tree---树形DP

    题目链接: https://cn.vjudge.net/problem/URAL-1018 题目大意: 给你一棵树,每条边有一个边权,求以1为根节点,q条边的子数(q+1个点),边权和至最大. 解题思 ...

  6. 关于C++学习笔记

    以清华大学出版社<C++语言程序设计> 第四版,郑莉,董渊,何江舟 三位老师编著为蓝本. 写这学习笔记,是为了自己清晰梳理C++.重粘代码也是为了方便更容易认清结构.

  7. 2018-2019-2 网络对抗技术 20165322 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165322 Exp1 PC平台逆向破解 目录 知识点总结 实验准备 任务一:直接修改程序机器指令,改变程序执行流程 任务二 通过构造输入参数,造成BOF攻击 ...

  8. nordic对苹果性能测试

    环境: app采用nrf connect或lightblue均可: nordic从端采用nrf52840开发板pca10056: 说明与规定: (1)鉴于手机app无法主动连续快速发送多包数据,故只测 ...

  9. Hadoop学习之路(二十七)MapReduce的API使用(四)

    第一题 下面是三种商品的销售数据 要求:根据以上数据,用 MapReduce 统计出如下数据: 1.每种商品的销售总金额,并降序排序 2.每种商品销售额最多的三周 第二题:MapReduce 题 现有 ...

  10. druid相关资料

    官方资料直达地址: Druid 首页 https://github.com/alibaba/druid/wiki/%E9%A6%96%E9%A1%B5 Druid 常见问题 https://githu ...