تحليل الأفكار:
لأنه تطبيق نموذج ، انظر أولاً إلى طبقة العرض. هناك حاجة إلى التحكم في المجلد في مجال التحكم في المجلد. أدخل نوع الملف ؛
لعناصر التحكم في الأزرار ، قم بربط طرق معالجة الأحداث لهم في هذه الطريقة ، أولاً قم بإنشاء كائن ملف JfileChooser وتعيين مرشح للمسار فقط للاختيار . احصل على صفيف الملف الذي يفي بالشروط.
بالنسبة لعناصر التحكم في مربع النص ، بمجرد تغيير النص داخل ، يجب إعادة تخصيص الملف في المسار المحدد. ملفات للشروط.
نظرًا لأن التحكم في مربع النص ومربع النص ، يمكن استخدام التصفية والعرض كطريقة منفصلة. ) طريقة فئة الملفات ، احصل على صفيف الملف الذي يلبي الشروط ، وتعيين القيمة إلى صفيف من نوع الملف ، ثم استخدم طريقة getModel () لفئة JTable للحصول على نموذج البيانات للجدول ، واستخدم setRow من فئة DefaultTableModel للحصول على نموذج البيانات. تقوم طريقة count () أولاً بمسح الجدول ، ثم الحلقات من خلال صفيف الملفات باستخدام ForeAck () ، تقوم بإنشاء بيانات صف الجدول باستخدام كائن [] في الحلقة ، يستدعي طريقة 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 ؛
يمتد ListCustomTypefile فئة عامة يمتد JFrame {
/**
*
*/
استاتيكي خاص نهائي الطويل المسلسل = -6263975104443132420L ؛
/**
* مرشح التمديد المخصص
*
* Author Li Zhongwei
*/
الفئة النهائية الخاصة CustomFilter تنفذ java.io.filefilter {
@تجاوز
قبول منطقي عام (اسم ملف) {
// احصل على التمديد المحدد من قبل المستخدم
String extName = extNameField.getText () ؛
if (extName == null || extname.isempty ())
العودة كاذبة
if (! extname.startswith (".")) // حدد بادئة التمديد
extname = "."
extName = extName.toLowerCase () ؛
// تحديد ما إذا كان اسم ملف التمديد والمرشح يفي بالمتطلبات
if (pathname.getName ().
العودة صحيح.
العودة كاذبة
}
}
jpanel contentPane الخاص ؛
خاص JTextfield Extnamefield ؛
طاولة jtable الخاصة ؛
ملف خاص dir ؛
خاص Jlabel Label ؛
/**
* إطلاق التطبيق.
*/
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
eventqueue.invokelater (New RunNable () {
تشغيل الفراغ العام () {
يحاول {
listCustomTypefile Frame = new ListCustomTypefile () ؛
frame.setVisible (صحيح) ؛
} catch (استثناء e) {
E.PrintStackTrace () ؛
}
}
}) ؛
}
/**
* إنشاء الإطار.
*/
public listcustomtypefile () {
Settitle ("إظهار ملف من النوع المحدد") ؛
setDefaultCloseOperation (jframe.exit_on_close) ؛
setBounds (100 ، 100 ، 450 ، 300) ؛
contentPane = new JPanel () ؛
contentPane.setBorder (New FreexBorder (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) ؛
Button Jbutton = New JButton ("Select Folder") ؛
button.addActionListener (New ActionListener () {
الفراغ العام actionperformed (Actionevent e) {
do_button_ActionPerformed (e) ؛
}
}) ؛
GridBagConstraints gbc_button = جديد GridBagConstraints () ؛
gbc_button.anchor = gridbagconstraints.north ؛
gbc_button.gridx = 0 ؛
gbc_button.gridy = 0 ؛
panel.add (button ، gbc_button) ؛
Label = New JLabel ("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 = New JLabel ("أدخل اسم ملحق الملف المحدد:") ؛
GridBagConstraints gbc_label_1 = new GridBagConstraints () ؛
gbc_label_1.anchor = gridbagconstraints.east ؛
gbc_label_1.insets = insets new (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 () {
careupdate public void (caretevent e) {
do_extNameField_CaretupDate (e) ؛
}
}) ؛
ExtNameField.settext (". gif") ؛
GridBagConstraints gbc_extNameField = new GridBagConstraints () ؛
gbc_extnamefield.insets = insets new (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 (جديد defaultTableModel (كائن جديد [] [] {} ، سلسلة جديدة [] {"اسم الملف" ، "حجم الملف" ، "تاريخ التعديل"}) {
/**
*
*/
استاتيكي خاص نهائي الطويل المسلسل = 5274214559103654856L ؛
Boolean [] columneditables = new Boolean [] {false ، false ، false} ؛
المنطقية العامة غير قابلة للآلة (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 = New JfileChooser () ؛ // إنشاء محدد ملف
// قم بتعيين مرشح المحدد
chooser.setFilesElectionMode (jfilechooser.directories_only) ؛
chooser.showdialog (هذا ، فارغة) ؛
dir = chooser.getSelectedFile () ؛
getLabel (). setText (dir.toString ()) ؛
// احصل على صفيف الملف المصفى الذي يفي بالمعايير
listfiles () ؛
}
/**
* عرض الملفات في المجلد
*/
listfiles private void () {
إذا (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 void do_extnamefield_caretupdate (caretevent e) {
listfiles () ؛
}
محمية Jlabel getlabel () {
علامة الإرجاع ؛
}
}
يظهر التأثير في الصورة: