62,614
社区成员
发帖
与我相关
我的任务
分享
package JTextAreaTest;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import javax.swing.*;
import java.util.*;
import java.io.*;
import java.util.List;
public class TransferHandlerTest extends TransferHandler{
private JTextArea jtextarea;
public TransferHandlerTest(JTextArea filepath){
this.jtextarea=filepath;
}
public boolean importData(JComponent comp,Transferable t){
try{
List files =(List)t.getTransferData(DataFlavor.javaFileListFlavor);
Iterator iterator = files.iterator();
while(iterator.hasNext()){
File f = (File)iterator.next();
if (f.isFile()){
jtextarea.setText("代码总行数:"+tree(f)+"");
}
else {
jtextarea.setText("不是标准文件");
}
}
return true;
}catch(UnsupportedFlavorException ufe) {
ufe.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
return false;
}
public boolean canImport(JComponent c, DataFlavor[] flavors){
for(int i=0;i<flavors.length;i++) {
if(DataFlavor.javaFileListFlavor.equals(flavors[i])) {
return true;
}
}
return false;
}
public static void main(String[] args) {
JTextArea textArea=new JTextArea(10, 30);
textArea.setTransferHandler(new TransferHandlerTest(textArea));
JFrame f=new JFrame("countJAVAlines");
f.getContentPane().add(new JScrollPane(textArea));
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
private static int tree(File f){
int countall=0;
if(!f.isDirectory()){//如果只是一个java文件
try{
String s=null;
FileReader fr=new FileReader(f.getAbsolutePath());
if(f.getAbsolutePath().matches("^.+\\.java$")){//正则判断后缀是否为.java的文件
BufferedReader br=new BufferedReader(fr);
s=br.readLine();
while(s!=null){//如果是读到最后一行则会返回null
if(s.trim().length()!=0) countall++;//判断是否为空串,即中间的空行
s=br.readLine();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}else{//是个文件夹
File[] childs=f.listFiles();
int countone=0;
for(int i=0;i<childs.length;i++){
String s=null;
try {
FileReader fr=new FileReader(childs[i].getAbsolutePath());
if(childs[i].getAbsolutePath().matches("^.+\\.java$")){//正则判断后缀是否为.java的文件
BufferedReader br=new BufferedReader(fr);
s=br.readLine();
while(s!=null){//如果是读到最后一行则会返回null
if(s.trim().length()!=0) countone++;//判断是否为空串,即中间的空行
s=br.readLine();
}
countall+=countone;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
if(childs[i].isDirectory()){
tree(childs[i]);
}
}
}
return countall;
}
}