Eclipse 3.2 里的提示错 急急急急急急急!
提示的错误在:(1)、18行
里面提示:serializable 类 WordFrequencyStatFrame 未声明类型为 long 的静态终态
serialVersionUID 字段
(2)、还有187行
没有为类型 WordsTable 定义方法 getWords()
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
/**
* Sample application using Frame.
*
* @author ZHG工作室 Email:wudazhg@163.com
* @version 1.00 08/03/23
*/
public class WordFrequencyStatFrame extends JFrame {
JToolBar jtb = new JToolBar();
JButton jb1 = new JButton("导入文件");
JButton jb2 = new JButton("统计词频");
JTextArea jTextArea1 = new JTextArea();
JTextArea jTextArea2 = new JTextArea();
JSplitPane jsp = new JSplitPane();
JScrollPane p1 = new JScrollPane();
JScrollPane p2 = new JScrollPane();
JLabel statusBar = new JLabel();
Container cp = getContentPane();
/**
* The constructor.
*/
public WordFrequencyStatFrame() {
MenuBar menuBar = new MenuBar();
Menu menuFile = new Menu();
MenuItem menuFileExit = new MenuItem();
menuFile.setLabel("文件");
menuFileExit.setLabel("退出");
// Add action listener.for the menu button
menuFileExit.addActionListener
(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
WordFrequencyStatFrame.this.windowClosed();
}
}
);
menuFile.add(menuFileExit);
Menu m1 = new Menu("操作");
MenuItem mi1 = new MenuItem("导入文件");
mi1.addActionListener(new ImportFile_Listener(this));
m1.add(mi1);
MenuItem mi2 = new MenuItem("统计词频");
mi2.addActionListener(new StatWordFrequency_Listener(this));
m1.add(mi2);
menuBar.add(menuFile);
menuBar.add(m1);
jb1.addActionListener(new ImportFile_Listener(this));
jb2.addActionListener(new StatWordFrequency_Listener(this));
jtb.add(jb1);
jtb.add(jb2);
cp.add(jtb,BorderLayout.NORTH);
setTitle("词频统计");
setMenuBar(menuBar);
setSize(new Dimension(800, 600));
// Add window listener.
this.addWindowListener
(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
WordFrequencyStatFrame.this.windowClosed();
}
}
);
jsp.setDividerLocation(500);
jTextArea2.setEditable(false);
p1.getViewport().add(jTextArea1);
p2.getViewport().add(jTextArea2);
jsp.setLeftComponent(p1);
jsp.setRightComponent(p2);
cp.add(jsp);
statusBar.setFont(new java.awt.Font("Dialog", 0, 11));
statusBar.setForeground(new Color(221, 14, 187));
statusBar.setBorder(BorderFactory.createLoweredBevelBorder());
statusBar.setText(" Copyright (c) ZHG工作室 2008 E-mail:wudazhg@163.com " +
" All Rights Reserved 中国·武汉·珞珈山");
cp.add(statusBar,BorderLayout.SOUTH);
}
/**
* Shutdown procedure when run as an application.
*/
protected void windowClosed() {
System.exit(0);
}
void stat(String text){
char[] w = new char[501];
WordsTable wt = new WordsTable();
try{
StringReader in = new StringReader(text);
while(true)
{
int ch = in.read();
if (Character.isLetter((char) ch))
{
int j = 0;
while(true)
{ ch = Character.toLowerCase((char) ch);
w[j] = (char) ch;
if (j < 500) j++;
ch = in.read();
if (!Character.isLetter((char) ch))
{
String word = new String(w,0,j);
if(!wt.isStopWord(word)){//如果不是停用词,则进行统计
word = wt.getStem(word);//提取词干
wt.stat(word);
}
break;
}
}
}
if (ch < 0) break;
}
in.close();
jTextArea2.setText("═════════════════");
jTextArea2.append("\n下面结果中单词(这里未计停用词表中同形的单词)的总个数为:"+wt.getCount());
jTextArea2.append("\n词频(这里仅计每个单词词根在文中出现的次数)列表如下:");
jTextArea2.append("\n═════════════════\n\n");
Iterator iter = wt.getWords();
while(iter.hasNext()){
Word wor = (Word)iter.next();
jTextArea2.append("\n"+wor.getWord()+" : "+wor.getCount());
}
jTextArea2.append("\n═════════════════");
}catch (Exception e)
{
System.out.println(e);
}
}
}
class ImportFile_Listener implements ActionListener{
WordFrequencyStatFrame adaptee;
public ImportFile_Listener(WordFrequencyStatFrame adaptee){
this.adaptee = adaptee;
}
//文件选择对话框
public void actionPerformed(ActionEvent e) {
JFileChooser jfc = new JFileChooser();
int i = jfc.showOpenDialog(null);
if(i==JFileChooser.APPROVE_OPTION){
try{
String str = "";
File f = jfc.getSelectedFile();
FileInputStream in = new FileInputStream(f);
BufferedReader r = new BufferedReader(new InputStreamReader(in));
adaptee.jTextArea1.setText("");
adaptee.jTextArea2.setText("");
while((str=r.readLine())!=null){
adaptee.jTextArea1.append(str+"\n");//末尾加上java的JTextArea中的行结束符
}
}catch(Exception exc){
exc.printStackTrace();//调试
}
}
}
}
class StatWordFrequency_Listener implements ActionListener{
WordFrequencyStatFrame adaptee;
public StatWordFrequency_Listener(WordFrequencyStatFrame adaptee){
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
Date d1 = new Date();
adaptee.stat(adaptee.jTextArea1.getText());
Date d2 = new Date();
Toolkit.getDefaultToolkit().beep();
JOptionPane.showMessageDialog(null,"用时"+(d2.getTime()-d1.getTime())+"毫秒!");
}
}