1 packagecom.cn.ldk.worldFrequency;2

3 importjava.awt.BorderLayout;4 importjava.awt.Dimension;5 importjava.awt.Font;6

7 importjava.awt.event.ActionEvent;8 importjava.awt.event.ActionListener;9 importjava.util.Collections;10 importjava.util.Comparator;11

12 importjava.util.Iterator;13 importjava.util.LinkedHashMap;14 importjava.util.LinkedList;15 importjava.util.List;16 importjava.util.Map;17 importjava.util.Set;18 importjava.util.TreeMap;19

20 importjavax.swing.BorderFactory;21 importjavax.swing.JButton;22 importjavax.swing.JFrame;23 importjavax.swing.JPanel;24

25 importorg.jfree.chart.ChartColor;26 importorg.jfree.chart.ChartFactory;27 importorg.jfree.chart.ChartPanel;28 importorg.jfree.chart.JFreeChart;29 importorg.jfree.chart.axis.CategoryAxis;30 importorg.jfree.chart.axis.ValueAxis;31 importorg.jfree.chart.labels.StandardCategoryItemLabelGenerator;32 importorg.jfree.chart.plot.CategoryPlot;33 importorg.jfree.chart.plot.PlotOrientation;34

35 importorg.jfree.chart.renderer.category.StackedBarRenderer3D;36

37 importorg.jfree.data.category.CategoryDataset;38 importorg.jfree.data.category.DefaultCategoryDataset;39

40 public class DisplayFace extendsJFrame{41 private static final long serialVersionUID = 1L;42 public static TreeMap map =WordFrequency.map;43 public static Set key =map.keySet();44

45 public static int count1 = 0;46 public static int count2 = 0;47 publicDisplayFace(){48 setTitle("词频统计程序");49 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);50 PanMain panMain = newPanMain(createDataSet());51 add(panMain);52 }53

54 @SuppressWarnings({ "unchecked", "static-access"})55 public staticCategoryDataset createDataSet(){56 DefaultCategoryDataset dataset = newDefaultCategoryDataset();57 if(count1%2==0&&count2==0){58 WordFrequency wf = newWordFrequency();59 map =wf.map;60

61 for (Iterator it =key.iterator(); it.hasNext();){62 String s =it.next();63 dataset.addValue((Integer)map.get(s),"",s);64 }65 }66 if(count1%2==1&&count2==0){67 WordFrequency wf = newWordFrequency();68 map =wf.map;69 TreeMap map1 = new TreeMap(new Comparator(){70 public intcompare(String o1, String o2) {71 returno2.compareTo(o1);72 }73 });74 for (Iterator it =key.iterator(); it.hasNext();){75 String s =it.next();76 map1.put(s, map.get(s));77 }78 Set key1 =map1.keySet();79 for (Iterator it =key1.iterator(); it.hasNext();){80 String s =it.next();81 dataset.addValue((Integer)map1.get(s),"",s);82 }83 }84 if(count1==0&&count2%2==0){85 WordFrequency wf = newWordFrequency();86 map =wf.map;87 Map map2 = new LinkedHashMap();88 map2 =sortByValue1(map);89 Set key2 =map2.keySet();90 for (Iterator it =key2.iterator(); it.hasNext();){91 String s =it.next();92 dataset.addValue((Integer)map2.get(s),"",s);93 System.out.println(s+" : "+map2.get(s));94 }95

96 }97 if(count1==0&&count2%2==1){98 WordFrequency wf = newWordFrequency();99 map =wf.map;100 Map map3 = new LinkedHashMap();101 map3 =sortByValue2(map);102 Set key3 =map3.keySet();103 for (Iterator it =key3.iterator(); it.hasNext();){104 String s =it.next();105 dataset.addValue((Integer)map3.get(s),"",s);106 System.out.println(s+" : "+map3.get(s));107 }108 }109

110 returndataset;111 }112 @SuppressWarnings("unchecked")113 public staticMap sortByValue1(Map unsortMap) {114 //value降序

115 List list = newLinkedList(unsortMap.entrySet());116 Collections.sort(list, newComparator(){117 public intcompare(Object o1, Object o2){118 return((Comparable) ((Map.Entry) (o2)).getValue()).compareTo(((Map.Entry) (o1)).getValue());119 }120 });121 Map sortedMap = new LinkedHashMap();122 for(Iterator it =list.iterator(); it.hasNext();){123 Map.Entry entry =(Map.Entry)it.next();124 sortedMap.put((String)entry.getKey(), (Integer)entry.getValue());125 }126 returnsortedMap;127 }128 @SuppressWarnings("unchecked")129 public staticMap sortByValue2(Map unsortMap) {130 //value升序

131 List list = newLinkedList(unsortMap.entrySet());132 Collections.sort(list, newComparator(){133 public intcompare(Object o1, Object o2){134 return((Comparable) ((Map.Entry) (o1)).getValue()).compareTo(((Map.Entry) (o2)).getValue());135 }136 });137 Map sortedMap = new LinkedHashMap();138 for(Iterator it =list.iterator(); it.hasNext();){139 Map.Entry entry =(Map.Entry)it.next();140 sortedMap.put((String)entry.getKey(), (Integer)entry.getValue());141 }142 returnsortedMap;143 }144

145 class PanMain extendsJPanel{146 private static final long serialVersionUID = 1L;147 publicPanMain(CategoryDataset dataSet){148 this.setLayout(new BorderLayout());//边框布局,使生成的柱形图随面板大小变化

149 setBorder(BorderFactory.createTitledBorder("词频统计"));150

151 JButton button1 = new JButton("单词");152 JButton button2 = new JButton("词频");153 button1.setPreferredSize(new Dimension(120,20));154 button2.setPreferredSize(new Dimension(120,20));155

156 ChartPanel p = newChartPanel(createdBarChart(dataSet));157 p.add(button1);158 p.add(button2);159 add(p, BorderLayout.CENTER);160

161 button1.addActionListener(newActionListener(){162 public voidactionPerformed(ActionEvent e){163 count1++;164 count2=0;165 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);166 DisplayFace frame = newDisplayFace();167 frame.setSize(600, 600);168 frame.setVisible(true);169 dispose();170 }171 });172

173

174 button2.addActionListener(newActionListener(){175 public voidactionPerformed(ActionEvent e){176 count2++;177 count1=0;178 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);179 DisplayFace frame = newDisplayFace();180 frame.setSize(600, 600);181 frame.setVisible(true);182 dispose();183 }184 });185 }186

187

188 @SuppressWarnings("deprecation")189 privateJFreeChart createdBarChart(CategoryDataset dataSet){190 JFreeChart jfreeChart = ChartFactory.createBarChart("词频统计",//图表标题

191 "单词",//目录轴(一般为横轴)标题

192 "单词数量",//数据轴(一般为纵轴)标题

193 dataSet, //数据集

194 PlotOrientation.HORIZONTAL, //图表方向

195 false,//是否显示图例(对于简单的柱状图必须是false)

196 true,//是否生成工具

197 false//是否生成URL链接

198 );199 CategoryPlot plot =(CategoryPlot) jfreeChart.getPlot();200 //获得目录轴

201 plot.setBackgroundPaint(ChartColor.getHSBColor(20, 50, 30));202 plot.setForegroundAlpha(1.0f);203

204 CategoryAxis cAxis =plot.getDomainAxis();205 //设置目录轴坐标上文字的字体

206 cAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 12));207 //设置目录轴轴的标题文字的字体

208 cAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));209

210 cAxis.setVisible(true);211 cAxis.setAxisLineVisible(false);212 cAxis.setTickMarksVisible(false);213

214 //获得数据轴

215 ValueAxis vAxis =plot.getRangeAxis();216 //设置数据轴坐标上的文字的字体

217 vAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 12));218 //设置数据轴的标题文字的字体

219 vAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));220 vAxis.setVisible(false);221

222 StackedBarRenderer3D render=newStackedBarRenderer3D();223 render.setItemLabelGenerator(newStandardCategoryItemLabelGenerator());224 render.setItemLabelFont(new Font("黑体",Font.PLAIN,9));225 render.setItemLabelsVisible(true);226 render.setItemMargin(0.1);227 //render.setSeriesItemLabelsVisible(1, false);

228 plot.setRenderer(render);229

230 returnjfreeChart;231 }232 }233 }234

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐