Bei Verwendung des Betriebssystems Grafical Interface listet das System beim Öffnen eines Ordners automatisch alle Dateien und Unterordner unter dem Ordner auf. Dieses Beispiel implementiert eine ähnliche Funktion: Lassen Sie den Benutzer zunächst einen Ordner auswählen, und das Programm listet dynamisch alle Dateien unter dem Ordner auf. Verwenden Sie die Fortschrittsleiste, um anzugeben, ob er abgeschlossen ist.
Die Idee ist wie folgt:
Erstens ist die Ansichtsschicht. Es ist nicht erforderlich, JTextfield, Jbutton, Jscrollpane und JTable zu erwähnen. Steuerelemente müssen natürlich Objekte als Mitgliedsvariablen erstellen, und zusätzlich muss es Variablen vom Typ Dateityp geben, um den ausgewählten Ordner darzustellen.
Diese Instanz beinhaltet nur ein Ereignis eines Steuerelements, dh der Schaltfläche Ordner auswählen. In seinen Veranstaltungen ist es üblich, Ordner auszuwählen und Informationen zu listen. Nachdem der Benutzer einen Ordner ausgewählt hat, verwenden Sie die Methode SetIndErminat (TRUE) der JProgressBar -Steuerung, um die Scroll -Balken zu starten, um die Scrolling zu starten. aufzuhören zu scrollen.
Der Code ist wie folgt:
Die Codekopie lautet wie folgt:
Import Java.awt.BorderLayout;
Import Java.awt.Eventqueue;
import Java.awt.event.ActionEvent;
import Java.awt.event.ActionListener;
Import Java.awt.event.Windowadapter;
Import Java.awt.event.WindowEvent;
Import Java.io.file;
import Javax.swing.jbutton;
import Javax.swing.jfilechooser;
importieren javax.swing.jframe;
import Javax.swing.jpanel;
import Javax.swing.jprogressbar;
import Javax.swing.jscrollpane;
import Javax.swing.jtable;
importieren javax.swing.jtextfield;
import Javax.swing.border.EmptyBorder;
import Javax.swing.table.DefaultTablemodel;
import Javax.swing.uimanager;
Die öffentliche Klasse Filelistframe erweitert JFrame {
/**
*
*/
Private statische endgültige lange Serialversionuid = -615665572894071265L;
Private Jpanel ContentPane;
private jtextfield choosetextfield;
Privat Jbutton Wahlbutton;
private jScrollpane Scrollpane;
Privatjtable Tisch;
Privat JProgressBar ProgressBar;
private Datei wählen Sie file;
/**
* Starten Sie die Anwendung.
*/
public static void main (String [] args) {
versuchen {
Uimanager.setlookandfeel ("com.sun.java.swing.plaf.nimbus.nimbuslookandfeel");
} catch (throwable e) {
E. printstacktrace ();
}
EventQueue.invokelater (new Runnable () {
public void run () {
versuchen {
Filelistframe Frame = new Filelistframe ();
Frame.SetVisible (True);
} catch (Ausnahme e) {
E. printstacktrace ();
}
}
});
}
/**
* Erstellen Sie den Rahmen.
*/
public filelistframe () {
settitle ("/u7a97/u4f53/u52a8/u6001/u52a0/u8f7d/u78c1/u76d8/u6587/u4ef6");
Addwindowlistener (neuer Fensteradapter () {
@Override
public void windowaktiviert (windowEvent arg0) {
do_this_windowActivated (arg0);
}
});
setDefaultCloseOperation (jframe.exit_on_close);
Setbounds (100, 100, 450, 300);
contentPane = new jpanel ();
ContentPane.SetBorder (neuer leererBorder (5, 5, 5, 5));
setContentPane (contentPane);
contentPane.setLayout (neuer BorderLayout (0, 0));
JPanel Panel = new Jpanel ();
contentPane.add (Panel, BorderLayout.North);
choosetextfield = new JTextField ();
panel.Add (choosetextfield);
choosetextfield.setColumns (13);
Wählen SieButton = new Jbutton ("/u9009/u62e9/u6587/u4ef6/u5939");
Wählen SieButton.addactionListener (new ActionListener () {
public void actionperformed (actionEvent arg0) {
do_chooseButton_actionperformed (arg0);
}
});
panel.Add (wählensbutton);
progresorBar = new JProgressBar ();
Panel.Add (ProgressBar);
scrollpane = new Jscrollpane ();
contentPane.add (scrollpane, borderLayout.Center);
Tabelle = new JTable ();
scrollpane.setViewPortView (Tabelle);
}
Protected void do_chooseButton_actionperformed (actionEvent arg0) {
JFilechooser filechooser = new JFilechooSer ();
filechooser.setFileSelectionMode (jFilechoOser.Directories_only);
filechooser.setmultiselecteInabled (false);
int result = filechooser.showopendialog (this);
if (result == jfilechooser.Approve_option) {
Wählen Sie file = filechooser.getSelectedFile (); // Erhalten Sie den vom Benutzer ausgewählten Ordner
choosetextfield.setText (wählen Sie
ProgressBar.setIndeterminate (TRUE); // Stellen Sie die Bildlaufleiste auf den Scrolling ein
endgültige Datei [] subfiles = wählen.
endgültiges StandardTablemodel -Modell = (defaultTablemodel) Tabelle.getModel ();
Modell.SetrowCount (0); // Löschen Sie die Tabelle
neuer Thread () {// einen neuen Thread starten
public void run () {
für (int i = 0; i <subfiles.length; i ++) {// Überqueren Sie den vom Benutzer ausgewählten Ordner
if (Unterfilme [i] .isfile ()) {// Bestimmen Sie, ob es sich um eine Datei handelt
Objekt [] Eigenschaft = neues Objekt [3];
Eigenschaft [0] = i + 1; // Speichern Sie die Seriennummer
Eigenschaft [1] = Unterfilme [i] .GetName (); // Speichern Sie den Dateinamen
Eigenschaft [2] = "";
if (Unterfilme [i] .ishidden ()) {// Bestimmen Sie, ob es sich um eine versteckte Datei handelt
Eigenschaft [2] = "versteckte Datei";
}
model.addrow (Eigenschaft); // Datensatz zur Tabelle hinzufügen
Tabelle.SetModel (Modell); // Aktualisieren Sie die Tabelle
}
versuchen {
Thread.Sleep (100); // Faden schläft 0,1 Sekunden, um eine dynamische Belastung zu erreichen
} catch (InterruptedException e) {
E. printstacktrace ();
}
}
ProgressBar.setIndeterminat (Falsch); // Stoppen Sie die Fortschrittsbalken -Scrollen
};
}.Start();
}
}
geschützte void do_this_windowactivated (windowEvent arg0) {
DefaultTablemodel modell = (defaultTablemodel) table.getModel ();
model.setColumnidentifiers (neues Objekt [] {"Seriennummer", "Dateiname", "Eigenschaften"});
}
}
Der Effekt wird im Bild gezeigt: