Al usar el sistema operativo de la interfaz gráfica, al abrir una carpeta, el sistema enumerará automáticamente todos los archivos y subcarpetas en la carpeta. Este ejemplo implementa una función similar: primero permita que el usuario seleccione una carpeta, y el programa enumerará dinámicamente todos los archivos en la carpeta; Use la barra de progreso para indicar si se completa.
La idea es la siguiente:
Primero está la capa de vista. No hay necesidad de mencionar JTextfield, JButton, JSCrollpane y Jtable, todos son viejos amigos. Los controles naturalmente necesitan crear objetos como variables miembros, y además, debe haber variables de miembro de tipo archivo para representar la carpeta seleccionada.
Esta instancia solo implica un evento de un control, es decir, el botón Seleccionar carpeta. En sus eventos, es común elegir carpetas e información de la lista. Después de que el usuario selecciona una carpeta, use el método SetIndeterminate (verdadero) del control JProgressBar para establecer la barra de desplazamiento para comenzar a desplazarse; para dejar de desplazarse.
El código es el siguiente:
La copia del código es la siguiente:
import java.awt.borderlayut;
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;
import javax.swing.jframe;
import javax.swing.jpanel;
import javax.swing.jprogressbar;
import javax.swing.jscrollpane;
import javax.swing.jtable;
import javax.swing.jTextfield;
import javax.swing.border.emptyborder;
import javax.swing.table.defaultTableModel;
import javax.swing.uimanager;
clase pública FilelistFrame se extiende Jframe {
/**
*
*/
Private static final Long SerialVersionUid = -615665572894071265l;
JPANEL ContentPane privado;
privado jtextfield choosetextfield;
JBUTTON PRIVADO JBUTTON BUTTON;
Privado JSCrollPane ScrollPane;
mesa privada jtable;
JUNTRIMA PRIVERS PROGRESS PROGRESSBAR;
Archivo privado ChoiceFile;
/**
* Iniciar la aplicación.
*/
public static void main (string [] args) {
intentar {
UiManager.setlookandFeel ("com.sun.java.swing.plaf.nimbus.nimbuslookandfeel");
} Catch (lanzable e) {
E.PrintStackTrace ();
}
EventQueue.invokelater (new Runnable () {
public void run () {
intentar {
FileListFrame Frame = new FilelistFrame ();
Frame.SetVisible (verdadero);
} Catch (Exception e) {
E.PrintStackTrace ();
}
}
});
}
/**
* Crea el marco.
*/
public filelistFrame () {
Settitle ("/U7A97/U4F53/U52A8/U6001/U52A0/U8F7D/U78C1/U76D8/U6587/U4EF6");
addWindowlistener (New WindowAdapter () {
@Anular
Public void WindowActivated (WindowEvent Arg0) {
do_this_windowactivated (arg0);
}
});
setDefaultCloseOperation (jframe.exit_on_close);
SetBounds (100, 100, 450, 300);
contentPane = new JPanel ();
ContentPane.setBorder (nuevo vacío (5, 5, 5, 5));
setContentPane (contentPane);
contentPane.setLayout (nuevo BorderLayout (0, 0));
Panel jpanel = new JPanel ();
contentpane.add (panel, borderLayout.north);
choosetextfield = new JTextField ();
panel.add (choosetextfield);
choosetextfield.setColumns (13);
ChoiceButton = new JButton ("/U9009/U62E9/U6587/U4EF6/U5939");
ChooseButton.addactionListener (new ActionListener () {
public void Actionperformed (ActionEvent Arg0) {
do_choosebutton_actionperformed (arg0);
}
});
panel.add (ChoiceButton);
ProgressBar = new JProgressBar ();
panel.Add (ProgressBar);
scrollPane = new JScrollPane ();
contentPane.Add (ScrollPane, BorderLayout.Center);
tabla = new JTable ();
scrollPane.setViewPortView (tabla);
}
protegido void do_choosebutton_actionperformed (ActionEvent Arg0) {
Jfilechooser filechooser = new jfilechooser ();
FileChooser.setFilesElectionMode (jfilechooser.directories_only);
fileCooser.setMultIselectionEnabled (falso);
int resultado = fileCooser.showopendialog (this);
if (resultado == Jfilechooser.approve_option) {
chowFile = fileCooser.getSelectedFile (); // Obtenga la carpeta seleccionada por el usuario
choosetextfield.settext (selleFile.getAbsolutePath ()); // Muestra la carpeta seleccionada por el usuario
ProgressBar.SetIndeterminate (verdadero); // Establezca la barra de desplazamiento para comenzar a desplazarse
Archivo final [] subfiles = ChoiceFile.ListFiles (); // Obtenga todos los archivos (carpetas) en la carpeta seleccionada por el usuario
Final DefaultTableModel Model = (DefaultTableModel) table.getModel ();
Model.SetRowCount (0); // Borrar la tabla
nuevo hilo () {// Inicie un nuevo hilo
public void run () {
para (int i = 0; i <subfiles.length; i ++) {// atraviesa la carpeta seleccionada por el usuario
if (subfiles [i] .ISfile ()) {// Determinar si es un archivo
Objeto [] propiedad = nuevo objeto [3];
propiedad [0] = i + 1; // Guardar el número de serie
propiedad [1] = subfiles [i] .getName (); // Guardar el nombre del archivo
propiedad [2] = "";
if (subfiles [i] .ishidden ()) {// Determinar si es un archivo oculto
propiedad [2] = "archivo oculto";
}
Model.Addrow (propiedad); // Agregar registro a la tabla
table.setModel (modelo); // Actualizar la tabla
}
intentar {
Thread.sleep (100); // El hilo duerme durante 0.1 segundos para lograr una carga dinámica
} capt (interruptedException e) {
E.PrintStackTrace ();
}
}
ProgressBar.SetIndeterminate (falso); // Detenga el desplazamiento de la barra de progreso
};
}.comenzar();
}
}
Void protegido do_this_windowactivated (WindowEvent Arg0) {
DefaultTableModel modelo = (defaultTableModel) table.getModel ();
Model.SetColumnIdidifiers (nuevo objeto [] {"número de serie", "nombre de archivo", "propiedades"});
}
}
El efecto se muestra en la imagen: