在java窗口中显示文件

在java窗口中显示文件,java,swing,jframe,window,Java,Swing,Jframe,Window,嗨,我想用JFrame在windows中显示文件名,但它不起作用,我不知道如何在arrayList中为我不知道的每个文件添加新元素 这是一节课: import java.io.File; import java.io.IOException; import javax.swing.JFrame; public class InterfaceGraphique extends JFrame { private static final long serialVersionUID

嗨,我想用JFrame在windows中显示文件名,但它不起作用,我不知道如何在arrayList中为我不知道的每个文件添加新元素

这是一节课:

import java.io.File;
import java.io.IOException;

import javax.swing.JFrame;



public class InterfaceGraphique  extends JFrame  {

   private static final long serialVersionUID = 1L;


    public InterfaceGraphique() {
       this.setTitle("My first Window");
       this.setSize(800,1000);
       this.setLocationRelativeTo(null);
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       // First Graph Object
       Graph graph = new Graph();
       String Path = "./TEST";
       try {
           parcourir2(Path);
       } catch (IOException e) {
           e.printStackTrace();
       }
       this.setContentPane(graph);

       this.setVisible(true);


   }

    public static  void parcourir2 (String Path) throws IOException {

        String[] Name = {"Point1", "Point2", "Point3","Point4","Point5","Point6","Point7","Point8","Point9","Point10"};
        Graph graph = new Graph();
           File repertoire = new File(Path);
           File[] liste = repertoire.listFiles(); 
           int y = 150;
           if (liste != null) {         
               for (int i = 0; i < liste.length; i++) {    
                   if (liste[i].isDirectory()) {
                       parcourir2(liste[i].getAbsolutePath());
                   }

                   if(liste[i].isFile()) {
                       Point Name[i] = new Point(liste[i].getName(),150,y,"normal");
                       graph.addPoint(Nom[i]);

                       System.out.println(liste[i] + "\n");
                       Test.TestFile.Afficher(liste[i]);
                   }
                   y+=50   ;
               }
           } else {
               System.err.println( "Nom de repertoire invalide");
           }

       }

}
导入java.io.File;
导入java.io.IOException;
导入javax.swing.JFrame;
公共类接口Graphique扩展JFrame{
私有静态最终长serialVersionUID=1L;
公共接口{
这个.setTitle(“我的第一个窗口”);
这个。设置大小(8001000);
此.setLocationRelativeTo(空);
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//第一个图形对象
图形=新图形();
字符串路径=“./TEST”;
试一试{
公园2(径);
}捕获(IOE异常){
e、 printStackTrace();
}
这个.setContentPane(图形);
此.setVisible(true);
}
公共静态void parcourir2(字符串路径)引发IOException{
字符串[]名称={“点1”、“点2”、“点3”、“点4”、“点5”、“点6”、“点7”、“点8”、“点9”、“点10”};
图形=新图形();
文件曲目=新文件(路径);
File[]liste=repertoire.listFiles();
int y=150;
如果(liste!=null){
对于(int i=0;i
还有一个类图:

import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Font;
import java.util.ArrayList;
import java.util.List;

public class Graph extends JPanel {
   private static final long serialVersionUID = 1L;
   List<Point> points = new ArrayList<Point>();

   @Override
   public void paintComponent(Graphics g){

       System.out.println("Je suis exécutée !"); 

       for (Point point : points) {

           if(point.getEtat().contentEquals("erreur")) {
               Font font = new Font("Courier", Font.BOLD, 20);
               g.setFont(font);
               g.setColor(Color.red); 

           } else if(point.getEtat().contentEquals("normal")) {
               Font font = new Font("Courier", Font.BOLD, 20);
               g.setFont(font);
               g.setColor(Color.black); 

           }else if(point.getEtat().contentEquals("valide")) {
               Font font = new Font("Courier", Font.BOLD, 20);
               g.setFont(font);
               g.setColor(Color.green); 
           }

           g.drawString(point.getFichier(), point.getX(), point.getX());

       }  
     }

   public void addPoint(Point point) {
       points.add(point);
   }

   public static void main(String[] args){
       @SuppressWarnings("unused")
       InterfaceGraphique ig = new InterfaceGraphique();

   }
}
导入java.awt.Graphics;
导入javax.swing.JPanel;
导入java.awt.Color;
导入java.awt.Font;
导入java.util.ArrayList;
导入java.util.List;
公共类图扩展了JPanel{
私有静态最终长serialVersionUID=1L;
列表点=新的ArrayList();
@凌驾
公共组件(图形g){
System.out.println(“jesuis exécutée!”);
用于(点:点){
if(point.getEtat().contentEquals(“erreur”)){
Font Font=新字体(“Courier”,Font.BOLD,20);
g、 setFont(字体);
g、 setColor(Color.red);
}else if(point.getEtat().contentEquals(“正常”)){
Font Font=新字体(“Courier”,Font.BOLD,20);
g、 setFont(字体);
g、 设置颜色(颜色为黑色);
}else if(point.getEtat().contentEquals(“valide”)){
Font Font=新字体(“Courier”,Font.BOLD,20);
g、 setFont(字体);
g、 setColor(Color.green);
}
g、 抽绳(point.getFichier(),point.getX(),point.getX());
}  
}
公共无效添加点(点-点){
点。添加(点);
}
公共静态void main(字符串[]args){
@抑制警告(“未使用”)
InterfaceGraphique ig=新的InterfaceGraphique();
}
}
这是我的项目的最后一步,这非常重要,感谢长期以来我一直在寻找的帮助

  • 所有方法(main()除外)都不应是静态的
  • 扩展JFrame很少是个好主意
  • 您的类接口Graphique没有任何用处
  • rcourir2()应该是Graph的实例方法

  • 所有这些都应该在EventDispatchThread上完成,而不是在主线程上完成。main应该创建一个Runnable来在EDT上运行,所有GUI工作都在run()方法中完成

  • 在该run方法中,创建一个JFrame,创建一个图形,将图形添加到该框架中,设置其大小或打包,并使其可见


  • 到底是什么问题?两行“点名称[i]=新点(liste[i].getName(),150,y,“normal”);graph.addPoint(名称[i]);”点是什么?此外,在parcourir2中,您创建一个图形,向其中添加项目,然后对该图形不做任何操作。在InterfaceGraphique构造函数中,您还创建了一个图形,但不做任何处理。我在下面发送了一个类点“我不知道在哪里放置新图形才能使其工作”。我们不将其添加为答案(我已标记)。取而代之的是把问题添加到上面。但在你这么做之前,有一个提示:为了更快地获得更好的帮助,请添加一个or。