📄 superdemo.java
字号:
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 + -