我正在使用JfileChooser进行文件夹选择。假设目录包含这些文件夹:
main
src
test
我希望程序自动选择“src”文件夹并列出其所有文件内容。如果文件夹不存在,我收到错误信息。这就是我到目前为止所做的事情。但是没有运气可以让它工作。任何帮助赞赏。
import java.awt.BorderLayout;
public class Iterate_Choose extends JFrame {
private JPanel contentPane;
private JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Iterate_Choose frame = new Iterate_Choose();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Iterate_Choose() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 645, 455);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
textField = new JTextField();
textField.setColumns(10);
final JTextArea textArea = new JTextArea();
final JButton btnNewButton = new JButton("Choose File Directory");
btnNewButton.addActionListener(new ActionListener() {
@SuppressWarnings("null")
public void actionPerformed(ActionEvent arg0) {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
try {
// Create a File object containing the canonical path of the desired directory
File f = new File(new File(".").getCanonicalPath());
String[] directories = f.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
return dir.isDirectory();
}
});
System.out.println(Arrays.toString(directories));
for(int i=0;i<directories.length;i++){
if(directories[i].equals("src")){
File f1 = new File(new File(".").getCanonicalPath() + "\\" +directories[i]);
chooser.setCurrentDirectory(f1);
}
else{
System.out.println("Error Occured!!");
}
}
}
// Set the current directory
catch (IOException e1) {
e1.printStackTrace();
}
// Show the dialog; wait until dialog is closed
int returnVal = chooser.showOpenDialog(btnNewButton);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
File f = chooser.getSelectedFile();
textField.setText(f.getAbsolutePath());
File[] contents = f.listFiles();
for(int file=0;file<contents.length;file++)
{
if (contents[file].getName().endsWith(".java")) {
String s = contents[file].getName();
System.out.println(contents[file].getName());
//here you get the contents of the selected directory
}
}
}
}
}
);
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(40)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 161, GroupLayout.PREFERRED_SIZE)
.addComponent(textField, GroupLayout.PREFERRED_SIZE, 325, GroupLayout.PREFERRED_SIZE)))
.addGroup(gl_contentPane.createSequentialGroup()
.addContainerGap()
.addComponent(textArea, GroupLayout.PREFERRED_SIZE, 401, GroupLayout.PREFERRED_SIZE)))
.addContainerGap(208, Short.MAX_VALUE))
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(114)
.addComponent(textField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addGap(31)
.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 36, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(textArea, GroupLayout.DEFAULT_SIZE, 177, Short.MAX_VALUE)
.addContainerGap())
);
contentPane.setLayout(gl_contentPane);
}
}
得到的结果如下,这不是预期的结果:
[.classpath, .project, .settings, bin, src]
Error Occured!!
Error Occured!!
Error Occured!!
Error Occured!!