我正在尝试制作一个要求用户指定文件扩展名的程序。然后,它会列出所有具有该扩展名的可用文件textarea
。我做了以下程序。但是,我的编译器在endsWith()
语句中显示错误,并且如果我在没有endsWith()
.
任何识别问题的帮助表示赞赏。提前致谢。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class search extends Thread implements ActionListener
{
JFrame f;
JButton bop,bser;
JTextField tf,text;
JTextArea ta;
JLabel lab,lab1;
String str;
JScrollPane scrol;
File fl;
search()
{
f=new JFrame("Search box");
f.setLayout(null);
f.setSize(820,700);
bop=new JButton("Open");
bop.setBounds(50,600,180,30);
bop.addActionListener(this);
f.add(bop);
lab=new JLabel("Extension");
lab.setBounds(340,570,180,30);
f.add(lab);
bser=new JButton("Search");
bser.setBounds(510,600,180,30);
bser.addActionListener(this);
f.add(bser);
text=new JTextField();
text.setBounds(280,600,180,30);
text.addActionListener(this);
text.setHorizontalAlignment(JTextField.CENTER);
f.add(text);
tf=new JTextField();
tf.setBounds(25,50,750,40);
tf.setFont(new Font("Lucida Console",Font.BOLD,20));
tf.setHorizontalAlignment(JTextField.CENTER);
f.add(tf);
ta=new JTextArea();
scrol=new JScrollPane(ta);
//JScrollPane.setPreferredSize(750,450);
scrol.setBounds(25,100,750,450);
f.add(scrol);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand().equals("Open"))
{
FileDialog fd=new FileDialog(f,"Open Box",FileDialog.LOAD);
fd.setSize(300,300);
fd.setVisible(true);
str=fd.getDirectory();
tf.setText(str);
}
if(ae.getActionCommand().equals("Search"))
{
fl=new File(str);
File[] flist=fl.listFiles();
for (int i=0;i<flist.length;i++)
{
String newline = System.getProperty("line.separator");
String nm=text.getText();
if(flist[i].endsWith(nm))
{
if(flist[i].isFile())
{
ta.setText(flist[i].getName()+newline);
}
}
}
}
}
public static void main(String args[])
{
new search();
}
}
编译器没有给出错误。只是当我运行程序......并输入目录路径时,只要我按下搜索,文本区域中只会显示一个文件名......即使我没有在文本字段中输入任何内容,并且如果条件不满足,那么也会发生同样的事情。