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

📄 superdemo.java

📁 Jfreechart 源码例子 是和jfreechart development Guide文档相配套的
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
package demo;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.DefaultFontMapper;
import com.lowagie.text.pdf.FontMapper;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfTemplate;
import com.lowagie.text.pdf.PdfWriter;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D.Double;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextPane;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.ToolTipManager;
import javax.swing.UIManager;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.MutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.RefineryUtilities;

public class SuperDemo extends ApplicationFrame
  implements ActionListener, TreeSelectionListener
{
  public static final String EXIT_COMMAND = "EXIT";
  private JPanel displayPanel;
  private JPanel chartContainer;
  private JPanel descriptionContainer;
  private JTextPane descriptionPane;
  private JEditorPane editorPane;

  public SuperDemo(String paramString)
  {
    super(paramString);
    setContentPane(createContent());
    setJMenuBar(createMenuBar());
  }

  private JComponent createContent()
  {
    JPanel localJPanel1 = new JPanel(new BorderLayout());
    JTabbedPane localJTabbedPane = new JTabbedPane();
    JPanel localJPanel2 = new JPanel(new BorderLayout());
    localJPanel2.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
    JSplitPane localJSplitPane = new JSplitPane(1);
    JTree localJTree = new JTree(createTreeModel());
    localJTree.addTreeSelectionListener(this);
    JScrollPane localJScrollPane = new JScrollPane(localJTree);
    localJScrollPane.setPreferredSize(new Dimension(300, 100));
    localJSplitPane.setLeftComponent(localJScrollPane);
    localJSplitPane.setRightComponent(createChartDisplayPanel());
    localJPanel2.add(localJSplitPane);
    localJTabbedPane.add("Demos", localJPanel2);
    MemoryUsageDemo localMemoryUsageDemo = new MemoryUsageDemo(300000);
    MemoryUsageDemo tmp154_152 = localMemoryUsageDemo;
    tmp154_152.getClass();
    new MemoryUsageDemo.DataGenerator(tmp154_152, 1000).start();
    localJTabbedPane.add("Memory Usage", localMemoryUsageDemo);
    localJTabbedPane.add("Source Code", createSourceCodePanel());
    localJTabbedPane.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
    localJPanel1.add(localJTabbedPane);
    return localJPanel1;
  }

  private JMenuBar createMenuBar()
  {
    JMenuBar localJMenuBar = new JMenuBar();
    JMenu localJMenu1 = new JMenu("File", true);
    localJMenu1.setMnemonic('F');
    JMenuItem localJMenuItem1 = new JMenuItem("Export to PDF...", 112);
    localJMenuItem1.setActionCommand("EXPORT_TO_PDF");
    localJMenuItem1.addActionListener(this);
    localJMenu1.add(localJMenuItem1);
    localJMenu1.addSeparator();
    JMenuItem localJMenuItem2 = new JMenuItem("Exit", 120);
    localJMenuItem2.setActionCommand("EXIT");
    localJMenuItem2.addActionListener(this);
    localJMenu1.add(localJMenuItem2);
    localJMenuBar.add(localJMenu1);
    JMenu localJMenu2 = new JMenu("Theme", true);
    localJMenu2.setMnemonic('T');
    JCheckBoxMenuItem localJCheckBoxMenuItem1 = new JCheckBoxMenuItem("JFree", true);
    localJCheckBoxMenuItem1.setActionCommand("JFREE_THEME");
    localJCheckBoxMenuItem1.addActionListener(this);
    localJMenu2.add(localJCheckBoxMenuItem1);
    JCheckBoxMenuItem localJCheckBoxMenuItem2 = new JCheckBoxMenuItem("Darkness", false);
    localJCheckBoxMenuItem2.setActionCommand("DARKNESS_THEME");
    localJCheckBoxMenuItem2.addActionListener(this);
    localJMenu2.add(localJCheckBoxMenuItem2);
    JCheckBoxMenuItem localJCheckBoxMenuItem3 = new JCheckBoxMenuItem("Legacy", false);
    localJCheckBoxMenuItem3.setActionCommand("LEGACY_THEME");
    localJCheckBoxMenuItem3.addActionListener(this);
    localJMenu2.add(localJCheckBoxMenuItem3);
    ButtonGroup localButtonGroup = new ButtonGroup();
    localButtonGroup.add(localJCheckBoxMenuItem1);
    localButtonGroup.add(localJCheckBoxMenuItem2);
    localButtonGroup.add(localJCheckBoxMenuItem3);
    localJMenuBar.add(localJMenu2);
    return localJMenuBar;
  }

  private JPanel createSourceCodePanel()
  {
    JPanel localJPanel = new JPanel(new BorderLayout());
    localJPanel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
    this.editorPane = new JEditorPane();
    this.editorPane.setEditable(false);
    this.editorPane.setFont(new Font("Monospaced", 0, 12));
    updateSourceCodePanel("source.html");
    JScrollPane localJScrollPane = new JScrollPane(this.editorPane);
    localJScrollPane.setVerticalScrollBarPolicy(20);
    localJScrollPane.setPreferredSize(new Dimension(250, 145));
    localJScrollPane.setMinimumSize(new Dimension(10, 10));
    localJPanel.add(localJScrollPane);
    return localJPanel;
  }

  private void updateSourceCodePanel(String paramString)
  {
    URL localURL = SuperDemo.class.getResource(paramString);
    if (localURL == null)
      localURL = SuperDemo.class.getResource("source.html");
    if (localURL != null)
      try
      {
        this.editorPane.setPage(localURL);
      }
      catch (IOException localIOException)
      {
        System.err.println("Attempted to read a bad URL: " + localURL);
      }
    else
      System.err.println("Couldn't find file: source.html");
  }

  public void actionPerformed(ActionEvent paramActionEvent)
  {
    String str = paramActionEvent.getActionCommand();
    if (str.equals("EXPORT_TO_PDF"))
    {
      exportToPDF();
    }
    else if (str.equals("LEGACY_THEME"))
    {
      ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());
      applyThemeToChart();
    }
    else if (str.equals("JFREE_THEME"))
    {
      ChartFactory.setChartTheme(StandardChartTheme.createJFreeTheme());
      applyThemeToChart();
    }
    else if (str.equals("DARKNESS_THEME"))
    {
      ChartFactory.setChartTheme(StandardChartTheme.createDarknessTheme());
      applyThemeToChart();
    }
    else if (str.equals("EXIT"))
    {
      attemptExit();
    }
  }

  private void applyThemeToChart()
  {
    Object localObject;
    Component localComponent = this.chartContainer.getComponent(0);
    if (localComponent instanceof ChartPanel)
    {
      localObject = (ChartPanel)localComponent;
      ChartUtilities.applyCurrentTheme(((ChartPanel)localObject).getChart());
    }
    else if (localComponent instanceof DemoPanel)
    {
      localObject = (DemoPanel)localComponent;
      JFreeChart[] arrayOfJFreeChart = ((DemoPanel)localObject).getCharts();
      for (int i = 0; i < arrayOfJFreeChart.length; ++i)
        ChartUtilities.applyCurrentTheme(arrayOfJFreeChart[i]);
    }
  }

  private void exportToPDF()
  {
    Object localObject;
    JFreeChart localJFreeChart1 = null;
    int i = 0;
    int j = 0;
    Component localComponent = this.chartContainer.getComponent(0);
    if (localComponent instanceof ChartPanel)
    {
      localObject = (ChartPanel)localComponent;
      localJFreeChart1 = ((ChartPanel)localObject).getChart();
      i = ((ChartPanel)localObject).getWidth();
      j = ((ChartPanel)localObject).getHeight();
    }
    else if (localComponent instanceof DemoPanel)
    {
      localObject = (DemoPanel)localComponent;
      localJFreeChart1 = (JFreeChart)((DemoPanel)localObject).charts.get(0);
      i = ((DemoPanel)localObject).getWidth();

⌨️ 快捷键说明

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