Ao usar o sistema operacional da interface gráfica, ao abrir uma pasta, o sistema listará automaticamente todos os arquivos e subpastas na pasta. Este exemplo implementa uma função semelhante: primeiro deixe o usuário selecionar uma pasta e o programa listará dinamicamente todos os arquivos na pasta; Use a barra de progresso para indicar se ela está concluída.
A idéia é a seguinte:
Primeiro é a camada de visualização. Não há necessidade de mencionar JTextfield, JButton, JScrollPane e JTable. Os controles naturalmente precisam criar objetos como variáveis de membro e, além disso, deve haver variáveis de membro do tipo arquivo para representar a pasta selecionada.
Esta instância envolve apenas um evento de um controle, ou seja, o botão Selecionar pasta. Em seus eventos, é comum escolher pastas e listar informações. Depois que o usuário seleciona uma pasta, use o método setIndeterminate (true) do controle JProgressBar para definir a barra de rolagem para começar a rolar; para parar de rolar.
O código é o seguinte:
A cópia do código é a seguinte:
importar java.awt.borderlayout;
importar java.awt.eventqueue;
importar java.awt.event.actionEvent;
importar java.awt.event.actionListener;
importar java.awt.event.windowadapter;
importar java.awt.event.windowEvent;
importar java.io.file;
importar javax.swing.jbutton;
importar javax.swing.jfileChooser;
importar javax.swing.jframe;
importar javax.swing.jpanel;
importar javax.swing.jProgressBar;
importar javax.swing.jscrollpane;
importar javax.swing.jtable;
importar javax.swing.jtextfield;
importar javax.swing.border.emptyborder;
importar javax.swing.table.defaultTableModel;
importar javax.swing.uimanager;
classe pública FileListFrame estende JFrame {
/**
*
*/
private estático final serialversionUid = -615665572894071265L;
PRIVADO JPALEL CONTENTPANE;
Private JTextfield ChoosEtextfield;
Private JButton ChoiceButton;
private jscrollpane scrollpane;
Tabela Jtable Private;
Private JProgressBar ProgressBar;
arquivo privado escolherfile;
/**
* Inicie o aplicativo.
*/
public static void main (string [] args) {
tentar {
Uimanager.setLookAndFeel ("com.sun.java.swing.plaf.nimbus.nimbusLookAndFeel");
} catch (jogável e) {
E.PrintStackTrace ();
}
EventQueue.invokelater (new Runnable () {
public void run () {
tentar {
FILELISTFRAME Frame = new FileListFrame ();
frame.setVisible (true);
} catch (Exceção e) {
E.PrintStackTrace ();
}
}
});
}
/**
* Crie o quadro.
*/
public filEListFrame () {
Settitle ("/u7a97/u4f53/u52a8/u6001/u52a0/u8f7d/u78c1/u76d8/u6587/u4ef6");
addWindowlistener (new windowAdapter () {
@Override
public void WindowActivated (WindowEvent Arg0) {
do_this_windowativated (arg0);
}
});
setDefaultCloseoperation (jframe.exit_on_close);
setbounds (100, 100, 450, 300);
contentPane = new jpanel ();
contentPane.setborder (New Emptyborder (5, 5, 5, 5));
setContentPane (contentPane);
contentPane.setLayout (new BorderLayout (0, 0));
Painel jpanel = new jpanel ();
contentPane.add (painel, borderlayout.north);
ChooseTextfield = new JTextfield ();
painel.add (ChoosEtextfield);
ChoosEtextfield.setColumns (13);
escolhabutton = novo jbutton ("/u9009/u62e9/u6587/u4ef6/u5939");
CHARCHButton.addactionListener (new ActionListener () {
public void ActionPormed (ActionEvent Arg0) {
do_ChooseButton_ActionPerformed (arg0);
}
});
painel.add (ChoiceButton);
ProgressBar = new JProgressBar ();
painel.add (ProgressBar);
scrollPane = new JScrollPane ();
contentPane.add (scrollpane, borderlayout.center);
tabela = new jTable ();
scrollpane.setViewPortView (tabela);
}
Void protegido do_choosebutton_actionPerformed (ActionEvent Arg0) {
JFILECHOOSER FILECHOOSER = new JfileChooser ();
filechooser.setFileSelectionMode (jfileChooser.directories_only);
filechooser.setMultisElectionEnabled (false);
int resultado = filechooser.showpendialog (this);
if (resultado == jfileChooser.approve_option) {
CHARGEFILE = FILECHOOSER.GETSELECTEDFILE (); // Obtenha a pasta selecionada pelo usuário
ChoosEtextfield.settext (CHOARFILEFILE.GETABSOLUTEPATH ()); // exibir a pasta selecionada pelo usuário
ProgressBar.setIndeterminate (true); // Defina a barra de rolagem para começar a rolar
FINAL FILE [] subfiles = CHOYFILE.LISTFILES (); // Obtenha todos os arquivos (pastas) na pasta selecionada pelo usuário
Final DefaultTableModel Model = (DefaultTableModel) tabela.getModel ();
Model.setRowCount (0); // Limpe a tabela
new thread () {// Inicie um novo thread
public void run () {
for (int i = 0; i <subfiles.length; i ++) {// atravessa a pasta selecionada pelo usuário
if (subfiles [i] .isfile ()) {// determinar se é um arquivo
Objeto [] propriedade = novo objeto [3];
propriedade [0] = i + 1; // salve o número de série
propriedade [1] = subfiles [i] .getName (); // salvar o nome do arquivo
propriedade [2] = "";
if (subfiles [i] .ishidden ()) {// determinar se é um arquivo oculto
propriedade [2] = "arquivo oculto";
}
Model.addrow (Propriedade); // Adicionar registro à tabela
tabela.setModel (modelo); // Atualize a tabela
}
tentar {
Thread.sleep (100); // Thread dorme por 0,1 segundos para obter carga dinâmica
} catch (interruptedException e) {
E.PrintStackTrace ();
}
}
ProgressBar.setIndeterminate (false); // Pare a barra de progresso rolando
};
}.começar();
}
}
Void protegido do_this_windowActivated (WindowEvent arg0) {
DefaultTabLEModel Model = (DefaultTableModel) tabela.getModel ();
model.setColumnIdentifiers (novo objeto [] {"Número de série", "Nome do arquivo", "Propriedades"});
}
}
O efeito é mostrado na imagem: