В качестве блока, который хранит данные, файлы будут генерировать многие категории в соответствии с типом данных, который является так называемым типом файла. При эксплуатации файлов данных различная обработка часто требуется в соответствии с различными типами файлов. Этот пример реализует чтение файлов указанного типа папки и отображение их в элементах управления таблицами. Это играет роль в привлечении классификации файлов в разработке проектов.
Анализ идеи:
Поскольку это приложение формы, сначала посмотрите на слой представления. Управление кнопкой Jbutton необходимо для выбора папки; Введите тип файла;
Для элементов управления кнопками привяжите методы обработки событий с ними в этом методе, сначала создайте объект селектора файлов jfileChoOser и установите фильтр для селектора, то есть используйте метод setFileSelectionMode (). . Затем выполнить метод showdialog (), затем используйте метод getSelectedFile () класса jfilechooser, чтобы получить выбранный путь, назначить его переменной типа файла, используйте метод toString () для отображения пути в метке и, наконец, Получите отфильтрованный массив файлов, который соответствует условиям.
Для элементов управления текстовым полем, когда текст внутри меняется, файл в выбранном пути должен быть переполнен. файлы для условий.
Поскольку управление кнопкой и управление текстовым полем должна реализовать фильтрацию и отображение, фильтрация и отображение могут использоваться в качестве отдельного метода. ) Метод класса файла Получите массив файлов, который соответствует условиям, назначает значение массиве типа файла, а затем используйте метод getModel () класса JTable, чтобы получить модель данных таблицы и использовать SetRow класса DefaultTableModel, чтобы получить модель данных. Метод count () сначала очищает таблицу, затем проходит через массив файлов, используя foreach (), создает данные строки таблицы, используя массив Object [] в цикле, вызывает метод getName () класса файла, чтобы получить имя файла и метод длины () для получения размера файла, метод LastModified () получает дату изменения и, наконец, используйте метод addRow () класса DefaultTableModel для добавления данных строки в табличную модель.
Код заключается в следующем:
Кода -копия выглядит следующим образом:
импортировать java.awt.borderlayout;
импортировать java.awt.eventqueue;
импортировать java.awt.gridbagconstraints;
импортировать java.awt.gridbaglayout;
импортировать java.awt.insets;
импортировать java.awt.event.actionevent;
импортировать java.awt.event.actionlistener;
Импорт java.io.file;
импортировать java.sql.date;
Импорт javax.swing.jbutton;
Импорт javax.swing.jfilechooser;
импортировать javax.swing.jframe;
импортировать javax.swing.jlabel;
импортировать javax.swing.jpanel;
Импорт javax.swing.jscrollpane;
импортировать javax.swing.jtable;
импортировать javax.swing.jtextfield;
Импорт javax.swing.border.emptyborder;
импортировать javax.swing.event.caretevent;
Импорт javax.swing.event.caretListener;
импортировать javax.swing.table.defaulttablemodel;
public class listcustomtypefile extends jframe {
/**
*
*/
Частный статический последний длинный сериал -версии = -6263975104443132420L;
/**
* Пользовательский фильтр расширения
*
* @author li Zhongwei
*/
Частный финальный класс Customfilter реализует java.io.filefilter {
@Override
Public Boolean Accept (PAILE PATHNAME) {
// Получить указанное расширение настройкой пользователем
String extname = extnamefield.getText ();
if (extname == null || extname.isempty ())
вернуть ложь;
if (! extname.startswith (".")) // Определить префикс расширения
extname = "."
extname = extname.tolowercase ();
// Определите, соответствует ли имя файла расширения и фильтра.
if (pathname.getName (). tolowercase (). Endswith (extname))
вернуть истину;
вернуть ложь;
}
}
Частный JPanel ContentPane;
Private Jtextfield Extnamefield;
частный таблица JTable;
частный файл dir;
частный лейбл Jlabel;
/**
* Запустите приложение.
*/
public static void main (string [] args) {
EventQueue.invokelater (new Runnable () {
public void run () {
пытаться {
ListCustomtyPefile frame = new ListCustomTyPefile ();
Frame.SetVisible (true);
} catch (Exception e) {
e.printstacktrace ();
}
}
});
}
/**
* Создать кадр.
*/
public listcustomtypefile () {
Settitle («Показать файл указанного типа»);
setDefaultCloseoPeration (jframe.exit_on_close);
Setbounds (100, 100, 450, 300);
ContentPane = new jPanel ();
ContentPane.Setborder (новый пустойбордер (5, 5, 5, 5));
contentpane.setlayout (new Borderlayout (0, 0));
SetContentPane (ContentPane);
Jpanel panel = new jpanel ();
ContentPane.Add (панель, borderlayout.north);
Gridbaglayout gbl_panel = new Gridbaglayout ();
gbl_panel.columnwidths = new int [] {93, 54, 0};
gbl_panel.rowheights = new int [] {23, 0, 0};
gbl_panel.columnweights = new Double [] {0.0, 1,0, Double.min_value};
gbl_panel.rowweights = new Double [] {0,0, 0,0, double.min_value};
panel.setlayout (gbl_panel);
Jbutton button = new jbutton ("select folder");
button.addactionListener (new ActionListener () {
public void actionperformed (actionEvent e) {
do_button_actionperformed (e);
}
});
GridbagConstraints gbc_button = new GridbagConstraints ();
gbc_button.anchor = gridbagconstraints.north;
gbc_button.gridx = 0;
gbc_button.gridy = 0;
panel.add (кнопка, gbc_button);
label = new jlabel ("папка");
GridbagConstraints gbc_label = new GridbagConstraints ();
gbc_label.fill = gridbagconstraints.horizontal;
gbc_label.gridx = 1;
gbc_label.gridy = 0;
panel.add (метка, gbc_label);
Jlabel label_1 = new jlabel ("Введите указанное имя расширения файла:");
GridbagConstraints gbc_label_1 = new GridbagConstraints ();
gbc_label_1.anchor = gridbagconstraints.east;
gbc_label_1.insets = новые вставки (0, 0, 0, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 1;
panel.add (label_1, gbc_label_1);
extnamefield = new jtextfield ();
extnamefield.addcaretListener (new CaretListener () {
public void careupdate (Caretevent e) {
do_extnamefield_caretupdate (e);
}
});
extnamefield.settext (". Gif");
GridbagConstraints GBC_EXTNAMEFIELD = new GridbagConstraints ();
gbc_extnamefield.insets = новые вставки (0, 0, 5, 0);
gbc_extnamefield.fill = gridbagconstraints.horizontal;
gbc_extnamefield.gridx = 1;
gbc_extnamefield.gridy = 1;
panel.add (extnamefield, gbc_extnamefield);
extnamefield.setcolumns (10);
JScrollpane scrollpane = new jscrollpane ();
contentpane.add (scrollpane, borderlayout.center);
Таблица = новый jtable ();
table.setautoresizemode (jtable.auto_resize_off);
table.setmodel (new DefaultTableModel (new Object [] [] {}, new String [] {"Имя файла", "Размер файла", "Дата изменения"}) {
/**
*
*/
Частный статический последний длинный сериал -версии = 5274214559103654856L;
boolean [] columeditebles = new Boolean [] {false, false, false};
общедоступный логический
вернуть columeditables [Column];
}
});
table.getColumnModel (). getColumn (0) .setPreferredWidth (220);
table.getColumnModel (). GetColumn (1) .SetPreferredWidth (85);
table.getColumnModel (). GetColumn (2) .SetPreferredWidth (110);
scrollpane.setViewPortView (таблица);
}
/**
* Выберите метод обработки событий папки
*
* @param e
*/
защищенная void do_button_actionperformed (actionevent e) {
Jfilechooser chooser = new jfilechooser (); // Создать селектор файлов
// Установить фильтр для селектора
chooser.setFileSelectionMode (jfilechooser.directories_only);
chooser.showdialog (это, null);
dir = chooser.getSelectedFile ();
getLabel (). setText (dir.toString ());
// Получить отфильтрованный массив файлов, который соответствует критериям
ListFiles ();
}
/**
* Показать файлы в папке
*/
private void listfiles () {
if (dir == null)
возвращаться;
// Получить массив файлов, который соответствует критериям
File [] files = dir.listfiles (new Customfilter ());
// Получить модель данных таблицы
DefaultTableModel model = (defaultTableModel) table.getModel ();
model.setRowCount (0);
для (файл файла: файлы) {// пройти массив файлов
// Создать данные строки таблицы
Object [] row = {file.getName (), file.length (),
новая дата (file.lastmodified ())};
model.addrow (row); // Добавить данные строки в табличную модель
}
}
Защищенная void do_extnamefield_caretupdate (caretevent e) {
ListFiles ();
}
Защищенный jlabel getlabel () {
return Label;
}
}
Эффект показан на картинке: