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

📄 datacharttool.java

📁 绘制各种图表例(饼图柱状图分布图等)。利用JFreeChart类
💻 JAVA
字号:
import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.FileReader;import java.util.StringTokenizer;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.JTabbedPane;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartPanel;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.labels.StandardCategoryToolTipGenerator;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.renderer.category.BarRenderer;import org.jfree.chart.renderer.category.LineAndShapeRenderer;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset;import org.jfree.data.general.DefaultPieDataset;import org.jfree.data.general.PieDataset;import org.jfree.experimental.chart.plot.CombinedCategoryPlot;import org.jfree.ui.ApplicationFrame;import org.jfree.ui.RefineryUtilities;/** * A demo for the {@link CombinedCategoryPlot} class. */public class DataChartTool extends ApplicationFrame {	private static final long serialVersionUID = 1L;	private static String DEFAULT_FILE_NAME="data.csv";	/**	 * Creates a new demo instance.	 * 	 * @param title the frame title.	 */	String dataFileName = null;	public DataChartTool(String title) {		super(title);		setJMenuBar(createMenuBar());		createDefaultPanel();		this.pack();	}	private JPanel createDefaultPanel(){		JPanel chartPanel = new JPanel();		chartPanel.add(new JLabel("Welcome to use Data Chart Tool!"));		chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));		setContentPane(chartPanel);		/*JTabbedPane tabPane = new JTabbedPane();				chartPanel.setLayout(new BorderLayout());		tabPane.addTab("1", new JPanel());		chartPanel.add(tabPane);*/		return chartPanel;	}	public void reload(){		if(dataFileName==null){			JOptionPane.showMessageDialog(DataChartTool.this, "Please select a file!");			return;		}		load(dataFileName);	}	public void load(String file){		JPanel main = new JPanel();				JTabbedPane tabPane = new JTabbedPane();		main.setLayout(new BorderLayout());				tabPane.addTab("Broken line chart", createDemoPanel(file));		tabPane.addTab("Pie-chart", createDemoPanel2(file));				main.add(tabPane);				main.setPreferredSize(new java.awt.Dimension(500, 270));		setContentPane(main);		main.setVisible(true);		//this.pack();	}	public static JPanel createDemoPanel2(String file) {		JFreeChart chart = createChart(createDataset(file));    		return new ChartPanel(chart);    	}		private static JFreeChart createChart(PieDataset dataset) {    		JFreeChart chart = ChartFactory.createPieChart(  				"Pie chart", 		// 僞僀僩儖      			    dataset, 			// 僨乕僞乮妱傝乯      			    true,				// 堄枴偼晄柧      			    true,      			//丂堄枴偼晄柧			    false 				//丂堄枴偼晄柧			    );     		return chart;    	}	/**	 * Creates a dataset.	 * 	 * @return A dataset.	 */	public static CategoryDataset createDataset1(String file) {		DefaultCategoryDataset result = new DefaultCategoryDataset();		String series1 = "Data";		int iLineCount = 0;		int iTokenCount = 0;		String line = null;		try {			// 們倱倴僼傽僀儖傪撉傒庢傞			String fileName = (file==null?DEFAULT_FILE_NAME:file);;			BufferedReader in = new BufferedReader(new FileReader(fileName));			int i = 1;			while ((line = in.readLine()) != null) {				// 摢偐傜俀峴偟偐傪撉傑側偄				iLineCount++;				StringTokenizer st = new StringTokenizer(line, ",");				while (st.hasMoreTokens()) {					iTokenCount++;					// 丂寁悢丗奺妱傝偺柤慜偲偡傞					double dValue = Double.valueOf(st.nextToken())							.doubleValue();					result.addValue(dValue, series1, "Data"+i++);				}				//				if (iLineCount > 2) {					// 峴栚偼俀埲忋挻偊傞偲丄柍帇偡傞					break;				}			}		} catch (Exception e) {			e.printStackTrace();			JOptionPane.showMessageDialog(null, "Data format is incorrect!");		}		return result;	}	/**	 * Creates a dataset.	 * 	 * @return A dataset.	 */	public static CategoryDataset createDataset2(String file) {		DefaultCategoryDataset result = new DefaultCategoryDataset();		int iLineCount = 0;		int iTokenCount = 0;		String line = null;		String series1 = "Type1";		try {			// 們倱倴僼傽僀儖傪撉傒庢傞			String fileName = (file==null?DEFAULT_FILE_NAME:file);			BufferedReader in = new BufferedReader(new FileReader(fileName));			int i = 1;			while ((line = in.readLine()) != null) {				// 摢偐傜俀峴偟偐傪撉傑側偄				iLineCount++;				StringTokenizer st = new StringTokenizer(line, ",");				while (st.hasMoreTokens()) {					iTokenCount++;					// 丂寁悢丗奺妱傝偺柤慜偲偡傞					double dValue = Double.valueOf(st.nextToken())							.doubleValue();					result.addValue(dValue, series1, "Data"+i++);				}				//				if (iLineCount > 2) {					// 峴栚偼俀埲忋挻偊傞偲丄柍帇偡傞					break;				}			}		} catch (Exception e) {			e.printStackTrace();			//JOptionPane.showMessageDialog(null, "Data format is incorrect!");		}		return result;	}	private static PieDataset createDataset(String file) {		int iLineCount = 0;		int iTokenCount = 0;		String line = null;		// 墌僌儔僼偺僨乕僞傪弨旛偡傞		DefaultPieDataset dataset = new DefaultPieDataset();		try {			// 們倱倴僼傽僀儖傪撉傒庢傞			String fileName = (file==null?DEFAULT_FILE_NAME:file);			BufferedReader in = new BufferedReader(new FileReader(fileName));			while ((line = in.readLine()) != null) {				// 摢偐傜俀峴偟偐傪撉傑側偄				iLineCount++;				StringTokenizer st = new StringTokenizer(line, ",");				while (st.hasMoreTokens()) {					iTokenCount++;					// 丂寁悢丗奺妱傝偺柤慜偲偡傞					double dValue = Double.valueOf(st.nextToken())							.doubleValue();					dataset.setValue(String.valueOf(iTokenCount), dValue);				}				//				if (iLineCount > 2) {					// 峴栚偼俀埲忋挻偊傞偲丄柍帇偡傞					break;				}			}			// 僼傽僀儖偼嬻側傜採帵忣曬傪弌偡			if (iLineCount == 0) {				//			}		} catch (Exception e) {			e.printStackTrace();			//JOptionPane.showMessageDialog(null, "Data format is incorrect!");		}		return dataset;	}	/**	 * Creates a chart.	 * 	 * @return A chart.	 */	private static JFreeChart createChart(String file) {		CategoryDataset dataset1 = createDataset1(file);		NumberAxis rangeAxis1 = new NumberAxis("Value");		rangeAxis1.setStandardTickUnits(NumberAxis.createIntegerTickUnits());		LineAndShapeRenderer renderer1 = new LineAndShapeRenderer();		renderer1				.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());		CategoryPlot subplot1 = new CategoryPlot(dataset1, null, rangeAxis1,				renderer1);		subplot1.setDomainGridlinesVisible(true);		CategoryDataset dataset2 = dataset1;//createDataset2(file);		NumberAxis rangeAxis2 = new NumberAxis("Value");		rangeAxis2.setStandardTickUnits(NumberAxis.createIntegerTickUnits());		BarRenderer renderer2 = new BarRenderer();		renderer2				.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());		CategoryPlot subplot2 = new CategoryPlot(dataset2, null, rangeAxis2,				renderer2);		subplot2.setDomainGridlinesVisible(true);		CategoryAxis domainAxis = new CategoryAxis("Category");		CombinedCategoryPlot plot = new CombinedCategoryPlot(domainAxis,				new NumberAxis("Range"));		plot.add(subplot1, 1);		plot.add(subplot2, 1);						JFreeChart result = new JFreeChart(				"Broken line chart", null/*new Font("SansSerif",						Font.BOLD, 12)*/, plot, true);		return result;	}	/**	 * Creates a panel for the demo (used by SuperDemo.java).	 * 	 * @return A panel.	 */	public static JPanel createDemoPanel(String file) {		JFreeChart chart = createChart(file);		return new ChartPanel(chart);	}	/**	 * Starting point for the demonstration application.	 * 	 * @param args	 *            ignored.	 */	private JMenuBar createMenuBar() {		JMenu file, edit, help;		file = new JMenu("File");		edit = new JMenu("Edit");		help = new JMenu("Help");		JMenuItem open, close;		open = new JMenuItem("Open",'O');		close = new JMenuItem("Exit",'X');		close.addActionListener(new ActionListener(){			public void actionPerformed(ActionEvent e) {				System.exit(0);							}		});		JMenuItem refresh = new JMenuItem("Refresh",'R');		edit.add(refresh);		refresh.addActionListener(new ActionListener(){			public void actionPerformed(ActionEvent e) {				reload();							}					});		file.add(open);		open.addActionListener(new ActionListener(){			public void actionPerformed(ActionEvent e) {				JFileChooser fd=new JFileChooser(); 								int result = fd.showOpenDialog(DataChartTool.this);				if(result==JFileChooser.APPROVE_OPTION){					DataChartTool.this.dataFileName = fd.getSelectedFile().getAbsolutePath();					DataChartTool.this.reload();				}			}					});		file.addSeparator();// 加一条分隔线		file.add(close);		JMenuBar bar = new JMenuBar();		bar.add(file);		bar.add(edit);		bar.add(help);		JMenuItem helpItem = new JMenuItem("Help",'H');		help.add(helpItem);		helpItem.addActionListener(new ActionListener(){			public void actionPerformed(ActionEvent e) {				JOptionPane.showMessageDialog(DataChartTool.this, "2008-2009 NEC All rights reserved.");			}					});		return bar;	}	public static void main(String[] args) {		String title = "Data Chart Tool";		DataChartTool demo = new DataChartTool(title);		demo.pack();		RefineryUtilities.centerFrameOnScreen(demo);						demo.setVisible(true);	}}

⌨️ 快捷键说明

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