ในฐานะที่เป็นหน่วยที่เก็บข้อมูลไฟล์จะสร้างหมวดหมู่มากมายตามประเภทข้อมูลซึ่งเป็นประเภทไฟล์ที่เรียกว่า เมื่อใช้งานไฟล์ข้อมูลจำเป็นต้องมีการประมวลผลที่แตกต่างกันตามประเภทไฟล์ที่แตกต่างกัน ตัวอย่างนี้ใช้การอ่านไฟล์ประเภทของโฟลเดอร์ที่ระบุและแสดงลงในการควบคุมตาราง สิ่งนี้มีบทบาทในการดึงดูดการจำแนกประเภทของไฟล์ในการพัฒนาโครงการ
การวิเคราะห์ความคิด:
เนื่องจากเป็นแอปพลิเคชันแบบฟอร์มก่อนอื่นให้ดูที่เลเยอร์มุมมอง จำเป็นต้องมีการควบคุมปุ่ม JButton เพื่อเลือกโฟลเดอร์ ป้อนประเภทไฟล์
สำหรับการควบคุมปุ่มให้เชื่อมโยงวิธีการประมวลผลเหตุการณ์กับพวกเขา . จากนั้นเรียกใช้วิธี showdialog () จากนั้นใช้วิธี getSelectedFile () ของคลาส jfilechooser เพื่อรับพา ธ ที่เลือกกำหนดให้กับตัวแปรประเภทไฟล์ใช้เมธอด toString () เพื่อแสดงเส้นทางในฉลากและในที่สุด รับอาร์เรย์ไฟล์ที่ผ่านการกรองซึ่งตรงกับเงื่อนไข
สำหรับการควบคุมกล่องข้อความเมื่อข้อความภายในการเปลี่ยนแปลงไฟล์ในเส้นทางที่เลือกจะต้องได้รับการปรับปรุงใหม่ ไฟล์สำหรับเงื่อนไข
เนื่องจากการควบคุมปุ่มและการควบคุมกล่องข้อความจะต้องใช้การกรองและแสดงผลการกรองและการแสดงผลสามารถใช้เป็นวิธีการแยกต่างหาก ) วิธีการของคลาสไฟล์รับอาร์เรย์ไฟล์ที่ตรงกับเงื่อนไขกำหนดค่าให้กับอาร์เรย์ประเภทไฟล์จากนั้นใช้วิธี getModel () ของคลาส JTable เพื่อรับแบบจำลองข้อมูลของตารางและใช้ setRow ของคลาส DefaultTableModel เพื่อรับแบบจำลองข้อมูล เมธอด count () จะล้างตารางก่อนจากนั้นลูปผ่านอาร์เรย์ไฟล์โดยใช้ foreach () สร้างข้อมูลแถวตารางโดยใช้อาร์เรย์ [] อาร์เรย์ในลูปเรียกใช้เมธอด getName () ของคลาสไฟล์เพื่อรับชื่อไฟล์ และเมธอด Length () เพื่อรับขนาดไฟล์วิธี 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;
คลาสสาธารณะ ListCustomTyPefile ขยาย JFrame {
-
-
-
ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = -62639751044443132420L;
-
* ตัวกรองส่วนขยายที่กำหนดเอง
-
* @author Li Zhongwei
-
CustomFilter คลาสสุดท้ายของคลาสส่วนตัวใช้ java.io.filefilter {
@Override
บูลีนสาธารณะยอมรับ (ชื่อพา ธ ไฟล์) {
// รับส่วนขยายที่ระบุโดยผู้ใช้
string extName = extNameField.getText ();
if (extName == null || extName.isEmpty ())
กลับเท็จ;
if (! extname.startswith (".")) // กำหนดคำนำหน้าส่วนขยาย
extname = "." + extname; // คำนำหน้าส่วนขยายที่สมบูรณ์
extName = extName.toLowerCase ();
// ตรวจสอบว่าชื่อไฟล์ส่วนขยายและตัวกรองตรงตามข้อกำหนด
if (pathname.getName (). ToLowerCase (). Endswith (extName))
กลับมาจริง;
กลับเท็จ;
-
-
Private JPanel ContentPane;
ส่วนตัว jtextfield extnamefield;
โต๊ะ jtable ส่วนตัว;
ไฟล์ส่วนตัว Dir;
ฉลาก Jlabel ส่วนตัว;
-
* เปิดแอปพลิเคชัน
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
Eventqueue.invokelater (ใหม่ runnable () {
โมฆะสาธารณะเรียกใช้ () {
พยายาม {
ListCustomTyPefile frame = new ListCustomTyPefile ();
frame.setVisible (จริง);
} catch (Exception e) {
E.PrintStackTrace ();
-
-
-
-
-
* สร้างเฟรม
-
Public ListCustomTyPefile () {
Settitle ("แสดงไฟล์ของประเภทที่ระบุ");
SetDefaultCloseoperation (jframe.exit_on_close);
Setbounds (100, 100, 450, 300);
ContentPane = new JPanel ();
ContentPane.SetBorder (ใหม่ Border (5, 5, 5, 5));
ContentPane.SetLayout (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 = ใหม่ double [] {0.0, 0.0, double.min_value};
Panel.setLayout (GBL_PANEL);
ปุ่ม jbutton = new JButton ("เลือกโฟลเดอร์");
button.addactionListener (ใหม่ actionListener () {
โมฆะสาธารณะ 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 (Label, GBC_LABEL);
JLabel label_1 = new JLabel ("ป้อนชื่อนามสกุลไฟล์ที่ระบุ:");
gridbagConstraints gbc_label_1 = ใหม่ gridbagconstraints ();
GBC_LABEL_1.ANCHOR = GRIDBAGCONTRAINTS.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 (ใหม่ Caretlistener () {
โมฆะสาธารณะ 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);
table = new jtable ();
table.setautoresizeMode (jtable.auto_resize_off);
table.setModel (ใหม่ defaultTableModel (วัตถุใหม่ [] [] {}, สตริงใหม่ [] {"ชื่อไฟล์", "ขนาดไฟล์", "วันที่แก้ไข"}) {
-
-
-
ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = 52742145559103654856L;
บูลีน [] columnedItables = new boolean [] {false, false, false};
Public Boolean IscelleDitable (Int Row, Int คอลัมน์) {
ส่งคืน columneditables [คอลัมน์];
-
-
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 = ใหม่ jfilechooser (); // สร้างตัวเลือกไฟล์
// ตั้งค่าตัวกรองสำหรับตัวเลือก
chooser.setFilesElectionMode (jfilechooser.directories_only);
chooser.showdialog (นี่, null);
dir = chooser.getSelectedFile ();
getLabel (). setText (dir.toString ());
// รับอาร์เรย์ไฟล์ที่กรองซึ่งตรงตามเกณฑ์
ListFiles ();
-
-
* แสดงไฟล์ในโฟลเดอร์
-
Void Private Void ListFiles () {
if (dir == null)
กลับ;
// รับอาร์เรย์ไฟล์ที่ตรงตามเกณฑ์
ไฟล์ [] files = dir.listfiles (ใหม่ CustomFilter ());
// รับแบบจำลองข้อมูลของตาราง
defaultTableModel model = (defaultTableModel) table.getModel ();
model.setrowcount (0);
สำหรับ (ไฟล์ไฟล์: ไฟล์) {// traverse ไฟล์อาร์เรย์
// สร้างข้อมูลแถวตาราง
Object [] row = {file.getName (), file.length ()
วันที่ใหม่ (file.lastmodified ())};
model.addrow (row); // เพิ่มข้อมูลแถวลงในโมเดลตาราง
-
-
Void Do_extNameField_CaretUpdate (CareteVent E) {
ListFiles ();
-
ป้องกัน JLabel getLabel () {
ฉลากกลับ;
-
-
เอฟเฟกต์แสดงในภาพ: