Sebagai unit yang menyimpan data, file akan menghasilkan banyak kategori sesuai dengan tipe data, yang merupakan jenis file yang disebut. Saat mengoperasikan file data, pemrosesan yang berbeda sering diperlukan sesuai dengan jenis file yang berbeda. Contoh ini mengimplementasikan file membaca jenis folder yang ditentukan dan menampilkannya ke kontrol tabel. Ini berperan dalam menarik klasifikasi file dalam pengembangan proyek.
Analisis Ide:
Karena ini adalah aplikasi formulir, pertama -tama lihat lapisan tampilan. Kontrol Tombol Jbutton diperlukan untuk memilih folder; Masukkan jenis file;
Untuk kontrol tombol, Bind Metode Pemrosesan Acara untuk mereka. Kemudian jalankan metode showdialog (), lalu gunakan metode getSelectedFile () Dapatkan array file yang difilter yang memenuhi syarat.
Untuk kontrol kotak teks, begitu teks di dalam berubah, file di jalur yang dipilih perlu dipulihkan. file untuk ketentuan.
Karena kontrol tombol dan kontrol kotak teks harus menerapkan pemfilteran dan tampilan, pemfilteran dan tampilan dapat digunakan sebagai metode yang terpisah. ) Metode kelas file Dapatkan array file yang memenuhi persyaratan, tetapkan nilai ke array tipe file, dan kemudian gunakan metode getModel () dari kelas JTable untuk mendapatkan model data tabel, dan gunakan setrow dari kelas DefaultTableModel untuk mendapatkan model data. Metode Count () terlebih dahulu menghapus tabel, lalu loop melalui array file menggunakan foreach (), membuat data baris tabel menggunakan array objek [] di loop, memanggil metode getName () dari kelas file untuk mendapatkan nama file file , dan metode panjang () untuk mendapatkan ukuran file, metode lastmodified () mendapatkan tanggal modifikasi, dan akhirnya menggunakan metode addRow () dari kelas DefaultTableModel untuk menambahkan data baris ke model tabel.
Kodenya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
impor java.awt.borderlayout;
impor java.awt.eventqueue;
impor java.awt.gridbagconstraints;
impor java.awt.gridbaglayout;
impor java.awt.insets;
impor java.awt.event.actionevent;
impor java.awt.event.actionlistener;
impor java.io.file;
impor java.sql.date;
impor javax.swing.jbutton;
impor javax.swing.jfilechooser;
impor javax.swing.jframe;
impor javax.swing.jlabel;
impor javax.swing.jpanel;
impor javax.swing.jscrollpane;
impor javax.swing.jtable;
impor javax.swing.jtextfield;
impor javax.swing.border.emptyborder;
impor javax.swing.event.caretevent;
impor javax.swing.event.caretlistener;
impor javax.swing.table.defaulttableModel;
ListCustomTypeFile kelas publik memperluas jframe {
/**
*
*/
SerialVersionuid Long Statis Pribadi = -6263975104443132420l;
/**
* Filter Ekstensi Kustom
*
* @author li zhongwei
*/
Private Final Class CustomFilter mengimplementasikan java.io.filefilter {
@Mengesampingkan
public boolean accept (file pathname) {
// Dapatkan ekstensi yang ditentukan yang ditetapkan oleh pengguna
String extName = extNeTefield.getText ();
if (extName == null || extname.isempty ())
mengembalikan false;
if (! extname.startswith (".")) // tentukan awalan ekstensi
extname = "."
extname = extname.tolowercase ();
// Tentukan apakah nama file ekstensi dan filter memenuhi persyaratan
if (pathname.getName (). TolowerCase (). Endswith (extname))
Kembali Benar;
mengembalikan false;
}
}
ContentPane Jpanel Pribadi;
Private JTextfield ExtNeField;
tabel jtable pribadi;
dirut file pribadi;
label jlabel pribadi;
/**
* Luncurkan aplikasi.
*/
public static void main (string [] args) {
Eventqueue.invokelater (runnable baru () {
public void run () {
mencoba {
ListCustomTypeFile frame = new ListCustomTypeFile ();
frame.setVisible (true);
} catch (Exception e) {
e.printstacktrace ();
}
}
});
}
/**
* Buat bingkai.
*/
Public ListCustomTypeFile () {
settitle ("Tampilkan file jenis yang ditentukan");
setDefaultCloseOperation (jframe.exit_on_close);
setbounds (100, 100, 450, 300);
ContentPane = jpanel baru ();
contentpane.setborder (baru kosong (5, 5, 5, 5));
ContentPane.setLayout (BorderLayout baru (0, 0));
setContentPane (ContentPane);
Jpanel panel = jpanel baru ();
contentpane.add (panel, borderlayout.north);
Gridbaglayout gbl_panel = new gridbaglayout ();
gbl_panel.columnwidths = int int [] {93, 54, 0};
gbl_panel.rowheights = int new baru [] {23, 0, 0};
gbl_panel.columnweights = double baru [] {0.0, 1.0, double.min_value};
gbl_panel.rowweights = double baru [] {0.0, 0.0, double.min_value};
panel.setLayout (gbl_panel);
Jbutton tombol = jbutton baru ("Pilih folder");
Button.AddActionListener (ActionListener baru () {
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 (tombol, GBC_BUTTON);
label = jLabel baru ("folder");
Gridbagconstraints gbc_label = new gridbagconstraints ();
gbc_label.fill = gridbagconstraints.horizontal;
gbc_label.gridx = 1;
gbc_label.gridy = 0;
panel.add (label, gbc_label);
Jlabel label_1 = jLabel baru ("Masukkan nama ekstensi file yang ditentukan:");
Gridbagconstraints gbc_label_1 = gridbagconstraints baru ();
gbc_label_1.anchor = gridbagconstraints.east;
gbc_label_1.insets = insets baru (0, 0, 0, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 1;
panel.add (label_1, gbc_label_1);
ExtNeField = new jTextField ();
ExtNeField.AddCaretListener (caretListener baru () {
public void careupdate (CaretEvent e) {
do_extnamefield_caretupdate (e);
}
});
extNeField.setText (". GIF");
Gridbagconstraints gbc_extNamefield = new gridbagconstraints ();
gbc_extNamefield.insets = insets baru (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 = jscrollpane baru ();
contentpane.add (scrollpane, borderlayout.center);
tabel = jtable baru ();
Table.setAutoresizeMode (jtable.auto_resize_off);
Table.setModel (DefaultTableModel baru (objek baru [] [] {}, string baru [] {"nama file", "ukuran file", "Tanggal Modifikasi"}) {
/**
*
*/
SerialVersionuid Long Statis Pribadi = 527421459103654856L;
boolean [] columneditables = boolean baru [] {false, false, false};
Public Boolean iscelleditable (int row, int column) {
return columneditables [kolom];
}
});
Table.getColumnModel (). GetColumn (0) .setPreferredWidth (220);
Table.getColumnModel (). GetColumn (1) .setPreferredWidth (85);
Table.getColumnModel (). GetColumn (2) .setPreferredWidth (110);
scrollpane.setViewPortView (tabel);
}
/**
* Pilih metode penanganan acara folder
*
* @param e
*/
void do_button_actionperformed (actionEvent e) {{ActionEvent E) {
JFilechooser chooser = jFileChooser (); // Buat pemilih file file
// Atur filter untuk pemilih
chooser.setFilesElectionMode (jfilechooser.directories_only);
chooser.showdialog (ini, null);
dir = chooser.getSelectedFile ();
getLabel (). setText (dir.toString ());
// Dapatkan array file yang difilter yang memenuhi kriteria
ListFiles ();
}
/**
* Tampilkan file di folder
*/
private void listFiles () {
if (dir == null)
kembali;
// Dapatkan array file yang memenuhi kriteria
File [] file = dir.listfiles (customFilter baru ());
// Dapatkan model data tabel
DefaultTableModel model = (defaultTableModel) Table.getModel ();
model.setrowcount (0);
untuk (file file: file) {// traverse array file
// Buat data baris tabel
Objek [] row = {file.getName (), file.length (),
tanggal baru (file.lastModified ())};
model.addrow (baris); // Tambahkan data baris ke model tabel
}
}
void do_extnamefield_caretupdate (careteVent e) {e) {
ListFiles ();
}
Jlabel getLabel () yang dilindungi {
label pengembalian;
}
}
Efeknya ditunjukkan pada gambar: