При использовании операционной системы графического интерфейса при открытии папки система автоматически перечисляет все файлы и подпапки под папкой. Этот пример реализует аналогичную функцию: сначала позвольте пользователю выбрать папку, и в программе динамически перечислит все файлы под папкой; Используйте панель прогресса, чтобы указать, завершена ли он.
Идея заключается в следующем:
Во -первых, это слой представления. Не нужно упоминать JTextfield, Jbutton, JScrollpane и JTable. Управление естественным образом необходимо создавать объекты в качестве переменных членов, и, кроме того, должны быть переменные элемента типа файла для представления выбранной папки.
Этот экземпляр включает только событие одного элемента управления, то есть кнопка Select Polder. В своих событиях это обычно выбирать папки и список. После того, как пользователь выбирает папку, используйте метод SetIndeterMinate (TRUE) управления JProgressBar, чтобы установить полосу прокрутки для запуска прокрутки; чтобы прекратить прокрутку.
Код заключается в следующем:
Кода -копия выглядит следующим образом:
импортировать java.awt.borderlayout;
импортировать java.awt.eventqueue;
импортировать java.awt.event.actionevent;
импортировать java.awt.event.actionlistener;
импортировать java.awt.event.windowadapter;
импортировать java.awt.event.windowevent;
Импорт java.io.file;
Импорт javax.swing.jbutton;
Импорт javax.swing.jfilechooser;
импортировать javax.swing.jframe;
импортировать javax.swing.jpanel;
Импорт javax.swing.jprogressbar;
Импорт javax.swing.jscrollpane;
импортировать javax.swing.jtable;
импортировать javax.swing.jtextfield;
Импорт javax.swing.border.emptyborder;
импортировать javax.swing.table.defaulttablemodel;
Импорт javax.swing.uimanager;
открытый класс FileListFrame расширяет jframe {
/**
*
*/
Частный статический конечный длинный сериал ряд = -615665572894071265L;
Частный JPanel ContentPane;
Частный JTextfield Choesetextfield;
Частный Jbutton Selectbutton;
Частный JScrollpane Scrollpane;
частный таблица JTable;
Частный JProgressbar ProgressBar;
частный файл selectFile;
/**
* Запустите приложение.
*/
public static void main (string [] args) {
пытаться {
Uimanager.setlookandfeel ("com.sun.java.swing.plaf.nimbus.nimbuslookandfeel");
} catch (throwable e) {
e.printstacktrace ();
}
EventQueue.invokelater (new Runnable () {
public void run () {
пытаться {
FileListFrame Frame = new FileListFrame ();
Frame.SetVisible (true);
} catch (Exception e) {
e.printstacktrace ();
}
}
});
}
/**
* Создать кадр.
*/
public filelistframe () {
Settitle ("/U7A97/U4F53/U52A8/U6001/U52A0/U8F7D/U78C1/U76D8/U6587/U4EF6");
addWindowlistener (new windowdapter () {
@Override
public void windowactivativated (windowEvent arg0) {
do_this_windowactivated (arg0);
}
});
setDefaultCloseoPeration (jframe.exit_on_close);
Setbounds (100, 100, 450, 300);
ContentPane = new jPanel ();
ContentPane.Setborder (новый пустойбордер (5, 5, 5, 5));
SetContentPane (ContentPane);
contentpane.setlayout (new Borderlayout (0, 0));
Jpanel panel = new jpanel ();
ContentPane.Add (панель, borderlayout.north);
choosetextfield = new jtextfield ();
panel.add (choosetextfield);
choosetextfield.setcolumns (13);
SelectButton = new JButton ("/U9009/U62E9/U6587/U4EF6/U5939");
selectbutton.addactionListener (new ActionListener () {
public void actionperformed (actionEvent arg0) {
do_choosebutton_actionperformed (arg0);
}
});
panel.add (selectbutton);
ProgressBar = new jProgressBar ();
панель.add (ProgressBar);
scrollpane = new jscrollpane ();
contentpane.add (scrollpane, borderlayout.center);
Таблица = новый jtable ();
scrollpane.setViewPortView (таблица);
}
защищенная void do_choosebutton_actionperformed (actionevent arg0) {
Jfilechooser filechooser = new jfilechooser ();
fileChooser.setFileSelectionMode (jfilechooser.directories_only);
fileChooser.SetMultIselectionEnabled (false);
int result = fileChooser.showopendialog (это);
if (result == jfilechooser.approve_option) {
выберите File = fileChooser.getSelectedFile (); // Выбрать папку, выбранную пользователем
choosetextfield.settext (selectfile.getabsolutepath ()); // отображать папку, выбранную пользователем
ProgressBar.setIndeterMinate (true); // Установите прокрутку, чтобы начать прокрутку
Окончательный файл [] subfiles = selectFile.listFiles (); // Получить все файлы (папки) в папке, выбранной пользователем
Окончательный defaulttablemodel model = (defaulttablemodel) table.getmodel ();
model.setRowCount (0); // очистить таблицу
new Thread () {// запустить новый поток
public void run () {
for (int i = 0; i <subfiles.length; i ++) {// пройти папку, выбранную пользователем
if (subfiles [i] .isfile ()) {// определить, является ли это файлом
Object [] свойство = новый объект [3];
свойство [0] = i + 1; // Сохранить серийный номер
Свойство [1] = subfiles [i] .getName (); // Сохранить имя файла
свойство [2] = "";
if (subfiles [i] .ishidden ()) {// определить, является ли это скрытым файлом
свойство [2] = "скрытый файл";
}
model.addrow (свойство); // Добавить запись в таблицу
table.setmodel (model); // Обновление таблицы
}
пытаться {
Thread.sleep (100); // резьба спит в течение 0,1 секунды для достижения динамической нагрузки
} catch (прерванная экспрессия e) {
e.printstacktrace ();
}
}
ProgressBar.setIndeterMinate (false); // Остановить прокрутку стержня прогресса
};
}.начинать();
}
}
защищенная void do_this_windowactivated (windowevent arg0) {
DefaultTableModel model = (defaultTableModel) table.getModel ();
model.setcolumnidentifiers (новый объект [] {"серийный номер", "имя файла", "свойства"});
}
}
Эффект показан на картинке: