⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jfreereportdemo.java

📁 swing编写的库存管理程序。毕业设计类
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**
 * ========================================
 * JFreeReport : a free Java report library
 * ========================================
 *
 * Project Info:  http://www.jfree.org/jfreereport/index.html
 * Project Lead:  Thomas Morgner;
 *
 * (C) Copyright 2000-2003, by Simba Management Limited and Contributors.
 *
 * This library is free software; you can redistribute it and/or modify it under the terms
 * of the GNU Lesser General Public License as published by the Free Software Foundation;
 * either version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License along with this
 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 * Boston, MA 02111-1307, USA.
 *
 * --------------------
 * JFreeReportDemo.java
 * --------------------
 * (C)opyright 2000-2003, by Simba Management Limited.
 *
 * Original Author:  David Gilbert (for Simba Management Limited);
 * Contributor(s):   -;
 *
 * $Id: JFreeReportDemo.java,v 1.6 2003/11/07 18:33:48 taqua Exp $
 *
 * Changes (from 8-Feb-2002)
 * -------------------------
 * 08-Feb-2002 : Updated code to work with latest version of the JCommon class library (DG);
 * 07-May-2002 : Demo now uses resource bundles for localisation...just need some translations
 *               now (DG);
 * 16-May-2002 : Line delimiters adjusted
 *               get report definition from jar (getResource())
 *               close behaviour unified
 * 05-Jun-2002 : Documentation
 * 10-Jun-2002 : Updated code to work with latest version of the JCommon class library;
 * 27-Aug-2002 : Added more demos
 * 29-Aug-2002 : Downport to JDK 1.2.2
 */

package org.jfree.report.demo;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.net.URL;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTabbedPane;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import org.jfree.report.Boot;
import org.jfree.report.JFreeReport;
import org.jfree.report.demo.helper.AboutAction;
import org.jfree.report.demo.helper.AbstractDemoFrame;
import org.jfree.report.modules.gui.base.PreviewFrame;
import org.jfree.report.modules.gui.base.components.ActionButton;
import org.jfree.report.modules.gui.base.components.ActionDowngrade;
import org.jfree.report.modules.gui.base.components.ActionMenuItem;
import org.jfree.report.modules.gui.base.components.FloatingButtonEnabler;
import org.jfree.report.modules.parser.base.ReportGenerator;
import org.jfree.report.util.Log;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.about.AboutFrame;

/**
 * The main frame in the report demonstration application. This demo has huge reports
 * added, so calling report 5 and 6 can require some patience.
 * <p>
 * If the system property "org.jfree.report.demo.DEBUG" is set to "true", debugging
 * messages to System.out stream are enabled.
 *
 * @author David Gilbert
 */
public class JFreeReportDemo extends AbstractDemoFrame
{
  /**
   * A demo handler class.
   */
  protected abstract static class DemoHandler
  {
    /**
     * Launches a preview of the report demo.
     *
     * @param def  the demo definition.
     */
    public abstract void performPreview(DemoDefinition def);
  }

  /**
   * A URL demo handler.
   */
  protected class URLDemoHandler extends DemoHandler
  {
    /** The report definition URL. */
    private final String definitionURL;

    /**
     * Creates a new handler.
     *
     * @param definitionURL  the URL for the report definition.
     */
    public URLDemoHandler(final String definitionURL)
    {
      this.definitionURL = definitionURL;
    }

    /**
     * Performs the preview.
     *
     * @param def  the demo definition.
     */
    public void performPreview(final DemoDefinition def)
    {
      preview(definitionURL, def.getData());
    }
  }

  /**
   * A demo definition.
   */
  protected static class DemoDefinition
  {
    /** The demo name. */
    private String name;

    /** The data for the demo. */
    private TableModel data;

    /** The demo handler. */
    private DemoHandler handler;

    /**
     * Creates a new demo definition.
     *
     * @param name  the demo name.
     * @param data  the data.
     * @param handler  the demo handler.
     */
    public DemoDefinition(final String name, final TableModel data, final DemoHandler handler)
    {
      if (name == null)
      {
        throw new NullPointerException("Name must not be null");
      }
      if (data == null)
      {
        throw new NullPointerException("TableModel must not be null");
      }
      if (handler == null)
      {
        throw new NullPointerException("Handler must not be null");
      }

      this.name = name;
      this.data = data;
      this.handler = handler;
    }

    /**
     * Returns the name of the demo.
     *
     * @return The name.
     */
    public String getName()
    {
      return name;
    }

    /**
     * Returns the data for the demo.
     *
     * @return The data.
     */
    public TableModel getData()
    {
      return data;
    }

    /**
     * Returns the demo handler.
     *
     * @return The demo handler.
     */
    public DemoHandler getHandler()
    {
      return handler;
    }
  }

  /**
   * About action.
   */
  private class DemoAboutAction extends AboutAction
  {
    /**
     * Default constructor.
     */
    public DemoAboutAction()
    {
      super(getResources());
    }

    /**
     * Receives notification of an action event.
     *
     * @param event  the event.
     */
    public void actionPerformed(final ActionEvent event)
    {
      displayAbout();
    }
  }

  /** About action. */
  private AboutAction aboutAction;

  /** A frame for displaying information about the demo application. */
  private AboutFrame aboutFrame;

  /** A tabbed pane for displaying the sample data sets. */
  private final JTabbedPane tabbedPane;

  /** A list of the available demos. */
  private final List availableDemos;

  /**
   * Constructs a frame containing sample reports created using the JFreeReport Class Library.
   */
  public JFreeReportDemo()
  {
    final Object[] arguments = new Object[]{JFreeReport.getInfo().getVersion()};
    final String pattern = getResources().getString("main-frame.title.pattern");
    setTitle(MessageFormat.format(pattern, arguments));

    availableDemos = createAvailableDemos();
    createActions();

    // set up the menu
    setJMenuBar(createMenuBar());

    final JPanel content = (JPanel) getContentPane();
    final JToolBar toolbar = createToolBar();
    content.add(toolbar, BorderLayout.NORTH);

    tabbedPane = new JTabbedPane();
    tabbedPane.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
    for (int i = 0; i < availableDemos.size(); i++)
    {
      final DemoDefinition dd = (DemoDefinition) availableDemos.get(i);
      tabbedPane.addTab(dd.getName(),
          RefineryUtilities.createTablePanel(dd.getData()));
    }

    content.add(tabbedPane);

    final JPanel buttons = new JPanel();
    buttons.setLayout(new GridLayout());

    final ActionButton helpButton = new ActionButton();
    helpButton.setAction(aboutAction);
    FloatingButtonEnabler.getInstance().addButton(helpButton);
    buttons.add(helpButton);

    final ActionButton previewButton = new ActionButton();
    previewButton.setAction(getPreviewAction());
    FloatingButtonEnabler.getInstance().addButton(previewButton);
    buttons.add(previewButton);

    final ActionButton closeButton = new ActionButton();
    closeButton.setAction(getCloseAction());
    FloatingButtonEnabler.getInstance().addButton(closeButton);
    buttons.add(closeButton);

    buttons.setBorder(BorderFactory.createEmptyBorder(0, 4, 4, 4));
    content.add(buttons, BorderLayout.SOUTH);
    setContentPane(content);
  }

  /**
   * Creates a list of the available demos.
   *
   * @return The list.
   */
  protected List createAvailableDemos()
  {
    // create a couple of sample data sets
    final TableModel data1 = new SampleData1();
    final TableModel data2 = new SampleData2();
    final TableModel data3 = new SampleData3();
    final TableModel data4 = new SampleData4();

    final ArrayList list = new ArrayList();
    list.add(new DemoDefinition(createExampleName(1), data1,
        new URLDemoHandler("/org/jfree/report/demo/report1.xml")));

    list.add(new DemoDefinition(createExampleName(2), data2,
        new URLDemoHandler("/org/jfree/report/demo/report2.xml")));

    list.add(new DemoDefinition(createExampleName(3), data3,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -