كوحدة تخزن البيانات ، ستقوم الملفات بإنشاء العديد من الفئات وفقًا لنوع البيانات ، وهو ما يسمى نوع الملف. عند تشغيل ملفات البيانات ، غالبًا ما تكون المعالجة المختلفة مطلوبة وفقًا لأنواع الملفات المختلفة. ينفذ هذا المثال قراءة ملفات النوع المحدد من المجلد وعرضها في عناصر تحكم الجدول. يلعب هذا دورًا في جذب تصنيف الملفات في تطوير المشروع.
تحليل الأفكار:
لأنه تطبيق نموذج ، انظر أولاً إلى طبقة العرض. هناك حاجة إلى التحكم في المجلد في مجال التحكم في المجلد. أدخل نوع الملف ؛
لعناصر التحكم في الأزرار ، قم بربط طرق معالجة الأحداث لهم في هذه الطريقة ، أولاً قم بإنشاء كائن ملف 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 () {
علامة الإرجاع ؛
}
}
يظهر التأثير في الصورة: