您的位置:首页 > 其它

计算小工具

2012-05-10 08:56 162 查看
package mymenu;

import java.awt.event.*;

import java.io.*;

import javax.swing.*;

public class CodeCounterFrame extends JFrame {

JMenuBar menuBar = new JMenuBar();

JMenu fileMenu = new JMenu("文件");

JMenuItem openMenuItem = new JMenuItem("打开");

JTextArea txa = new JTextArea();

JScrollPane jsp =new JScrollPane(txa);

String output = "";

static long codeLines = 0;

static long commentLines = 0;

static long blankLines = 0;

public CodeCounterFrame()

{

this.setJMenuBar(menuBar);

menuBar.add(fileMenu);

fileMenu.add(openMenuItem);

txa.setEditable(false); //Tax里面的内容不能被编辑

add(jsp); //内部匿名类监听器

openMenuItem.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

if(e.getSource() == openMenuItem)

{

//点击了打开菜单

//弹出文件选择器

JFileChooser chooser = new JFileChooser();

chooser.showOpenDialog(null);

//获取选中的文件

File selectedFile = chooser.getSelectedFile();

BufferedReader br = null;

boolean flag = false;

try {

FileReader reader = new FileReader(selectedFile);//读取文档的内容

br = new BufferedReader(reader);

String line = "";

//2读文件

while ((line = br.readLine()) != null)

{

line = line.trim(); // 除去注释前的空格

if (line.matches("^[ ]*$"))

{

// 匹配空行

blankLines++;

}

else if (line.startsWith("//"))

{

commentLines++;

}

else if (line.startsWith("/*") && !line.endsWith("*/"))

{

commentLines++;

flag = true;

}

else if (line.startsWith("/*") && line.endsWith("*/"))

{

commentLines++;

}

else if (flag == true)

{

commentLines++;

if (line.endsWith("*/"))

{

flag = false;

}

}

else

{

codeLines++;

}

//将结果保存到output

output+=("代码行数:" + codeLines+"\n"+"注释行数:" + commentLines+"\n"

+"空白行数: " + blankLines+"\n"+"总行数:" + (codeLines+commentLines+blankLines));

//将统计的结果在tax里面显示

txa.setText(output);

}

}

catch (FileNotFoundException ex)

{

ex.printStackTrace();

}

catch (IOException ex)

{

ex.printStackTrace();

}

finally

{

if (br != null)

{

try {

br.close();

br = null;

}

catch (IOException ex)

{

ex.printStackTrace();

}

}

}

}

}

});

}

//Frame主程序

public static void main(String[] args)

{

try {

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); //windows界面风格

} catch (Exception e) {

e.printStackTrace();

}

CodeCounterFrame frame = new CodeCounterFrame();

frame.setTitle("统计代码的小工具");

frame.setSize(300,200);

frame.setVisible(true);

frame.setLocationRelativeTo(null);//窗体居中显示

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: