问题描述
- 下面的程序是在文本框输入文件夹和关键字查找文件路径并输出在面板上,但是为什么只能输出一行
-
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static java.awt.BorderLayout.*;
public class FileSearcher
{
public static void findFiles(String baseDirName, String targetFileName, List fileList)
{
String tempName=null;
File baseDir=new File(baseDirName);
if(!baseDir.exists()||!baseDir.isDirectory())
{
System.out.println("文件查找失败"+baseDirName+"不是一个目录");
}
else
{
String[] filelist=baseDir.list();
for(int i=0;i
{
File readfile=new File(baseDirName+"\"+filelist[i]);
if(!readfile.isDirectory())
{
tempName=readfile.getName();
if(FileSearcher.wildcardMatch(targetFileName, tempName))
{
fileList.add(readfile.getAbsoluteFile());
}
}
else if(readfile.isDirectory())
{
findFiles(baseDirName+"\"+filelist[i],targetFileName,fileList);
}
}
}
}
private static boolean wildcardMatch(String pattern ,String str)
{
int patternLength=pattern.length();
int strLength=str.length();
int strIndex=0;
char ch;
for(int patternIndex=0;patternIndex
{
ch=pattern.charAt(patternIndex);
if(ch=='*')
{
while(strIndex
{
if(wildcardMatch(pattern.substring(patternIndex + 1),str.substring(strIndex)))
{
return true;
}
strIndex++;
}
}
else if(ch=='?')
{
strIndex++;
if(strIndex>strLength)
{
return false;
}
}
else
{
if(strIndex>=strLength||(ch!=str.charAt(strIndex)))
{
return false;
}
strIndex++;
}
}
return (strIndex==strLength);
}
public static void main(String[] args)
{
JFrame jf=new JFrame();
JPanel jp=new JPanel();
final JTextArea jta=new JTextArea(20,30);
final JTextField jtf=new JTextField(10);
final JTextField jtf1=new JTextField(10);
JButton jb=new JButton("搜索");
jp.add(jtf);
jp.add(jtf1);
jp.add(jb);
jf.setLayout(new BorderLayout());
jf.add(jta,SOUTH);
jf.add(jp,NORTH);
jf.pack();
jf.setVisible(true);
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String baseDIR=jtf.getText();
String fileName=jtf1.getText();
List resultList=new ArrayList();
FileSearcher.findFiles(baseDIR,fileName,resultList);
if(resultList.size()==0)
{
System.out.println("worng");
}
else
{
for(int i=0;i<resultList.size();i++)
{
StringBuffer sb=new StringBuffer();
sb.append(resultList.get(i));
jta.setText(sb.toString());
System.out.println(resultList.get(i));} } } }); }
}
解决方案
for(int i=0;i<resultList.size();i++)
{
StringBuffer sb=new StringBuffer();
sb.append(resultList.get(i));
jta.setText(sb.toString());
System.out.println(resultList.get(i));
}
->
StringBuffer sb=new StringBuffer();
for(int i=0;i<resultList.size();i++)
{
sb.append(resultList.get(i));
System.out.println(resultList.get(i));
}
jta.setText(sb.toString());
时间: 2024-09-06 12:07:01