Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JTextField中存储和显示for循环内容?_Java_Swing_File_Jtextfield - Fatal编程技术网

Java 如何在JTextField中存储和显示for循环内容?

Java 如何在JTextField中存储和显示for循环内容?,java,swing,file,jtextfield,Java,Swing,File,Jtextfield,我想在文本字段中显示缺少的文件名 如何在JTextField中存储和显示for循环内容 import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JFileChooser; import javax.swing.JTextField; import java.io.File; import java.io.BufferedReader; impo

我想在文本字段中显示缺少的文件名

如何在
JTextField
中存储和显示for循环内容

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JFileChooser;
import javax.swing.JTextField;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class CheckFiles extends JPanel {

    public String FILENAME = "f:\\branch_report.txt";
    protected ArrayList listFromFile;
    protected ArrayList listFromDir = new ArrayList();

    protected void getListFromFile() {
        listFromFile = new ArrayList();
        BufferedReader is;
        try {
            is = new BufferedReader(new FileReader(FILENAME));
            String line;
            while ((line = is.readLine()) != null) {
                listFromFile.add(line);
            }
        } catch (FileNotFoundException e) {
            System.err.println("Can't open file list file.");
            return;
        } catch (IOException e) {
            System.err.println("Error reading file list");
            return;
        }
    }

    public void getListFromDirectory() {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));
        fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int result = fileChooser.showOpenDialog(this);
        if (result == JFileChooser.APPROVE_OPTION) {
            File selectedFile = fileChooser.getSelectedFile();
            System.out.println("Selected file: " + selectedFile.getAbsolutePath());
            listFromDir = new ArrayList();
            String[] l = new java.io.File(selectedFile.getAbsolutePath()).list();
            for (int i = 0; i < l.length; i++) {
                listFromDir.add(l[i]);
            }
        } else {
            JOptionPane.showMessageDialog(null, "No files selected");
        }
    }

    public void reportMissingFiles() {
        for (int i = 0; i < listFromFile.size(); i++) {
            if (!listFromDir.contains(listFromFile.get(i))) {
                JOptionPane.showMessageDialog(null, listFromFile.get(i), "File not found", JOptionPane.ERROR_MESSAGE);  // want to display the missing files in text field
            }
        }
        JFrame frame = new JFrame("Files Not Found");
//frame.getContentPane().add(frame,"Center");
        frame.setSize(800, 600);
        frame.setVisible(true);
        JTextField text = new JTextField();
        text.getSelectedFile().getName();
        frame.add(text);
        text.setVisible(true);
//final JLabel label = new JLabel();
//frame.add(label);
//label.setVisible(true);
    }

    public static void main(String[] argv) {
        CheckFiles cf = new CheckFiles();
        System.out.println("CheckFiles starting.");
        cf.getListFromFile();
        cf.getListFromDirectory();
        cf.reportMissingFiles();
        System.out.println("CheckFiles done.");
    }
}
import javax.swing.JFrame;
导入javax.swing.JOptionPane;
导入javax.swing.JPanel;
导入javax.swing.JFileChooser;
导入javax.swing.JTextField;
导入java.io.File;
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.ArrayList;
公共类检查文件扩展了JPanel{
公共字符串FILENAME=“f:\\branch\u report.txt”;
受保护的ArrayList listFromFile;
受保护的ArrayList listFromDir=新ArrayList();
受保护的无效getListFromFile(){
listFromFile=新的ArrayList();
缓冲读取器是;
试一试{
is=新的BufferedReader(新的文件读取器(文件名));
弦线;
而((line=is.readLine())!=null){
listFromFile.add(行);
}
}catch(filenotfounde异常){
System.err.println(“无法打开文件列表文件”);
返回;
}捕获(IOE异常){
System.err.println(“读取文件列表时出错”);
返回;
}
}
public void getListFromDirectory(){
JFileChooser fileChooser=新的JFileChooser();
fileChooser.setCurrentDirectory(新文件(System.getProperty(“user.home”));
fileChooser.setFileSelectionMode(仅限JFileChooser.DIRECTORIES_);
int result=fileChooser.showOpenDialog(此);
if(result==JFileChooser.APPROVE\u选项){
File selectedFile=fileChooser.getSelectedFile();
System.out.println(“所选文件:+selectedFile.getAbsolutePath());
listFromDir=newarraylist();
String[]l=new java.io.File(selectedFile.getAbsolutePath()).list();
对于(int i=0;i
您可以用以下实现替换
reportMissingFiles()

public void reportMissingFiles() {
        // Set for containing missing files.
        Set<String> notFoundFileSet = new HashSet<>();
        for (int i = 0; i < listFromFile.size(); i++) {
            if (!listFromDir.contains(listFromFile.get(i))) {
                JOptionPane.showMessageDialog(null, listFromFile.get(i),
                        "File not found", JOptionPane.ERROR_MESSAGE);
                // add missing files in set
                notFoundFileSet.add(listFromFile.get(i).toString());
            }
        }
        JFrame frame = new JFrame("Files Not Found");
        frame.setSize(800, 600);
        frame.setVisible(true);
        JTextField text = new JTextField();
        // Stringify Set of missing file 
        text.setText(notFoundFileSet.toString());
        frame.add(text);
        text.setVisible(true);
    }
public void reportMissingFiles(){
//设置为包含丢失的文件。
Set notFoundFileSet=newhashset();
对于(int i=0;i
我使用
Set
来包含丢失的文件,并将
Set
的字符串版本添加到
JTextField
。您可以简单地使用
StringBuilder
,也可以根据需要格式化文件名


注意:始终在代码中使用首选项,例如不要使用
ArrayList FromFile
您应该使用
ArrayList FromFile
使程序类型安全。

“我想在文本字段中显示缺少的文件名”最好在列表或。。有关在树或表中使用良好(文件)图标的信息,请参阅。使用逻辑一致的代码行和代码块缩进形式。缩进的目的是使代码的流程更易于遵循
text.getSelectedFile().getName()
您应该提到此代码将不会编译..删除此代码可以正常工作。唯一的问题是我想在textfield中显示缺少的文件名。“我想在textfield中显示缺少的文件名。”嗯。。对你为什么老是重复这个?非常感谢。但是替换它,我会得到以下错误。E:\>javac CheckFiles.java CheckFiles.java:57:非法启动类型Set notFoundFileSet=new HashSet();^1错误我想您可能没有使用Java7。尝试使用
Set notFoundFileSet=newhashset()嘿,兄弟!!你是天才。谢谢。这真的帮了我很大的忙。但需要在单独的行中打印每个文件名。我应该做哪些更改来实现它?正如我在回答中提到的,您可以使用
StringBuilder
String
串联来设置格式。