En tant qu'unité qui stocke les données, les fichiers généreront de nombreuses catégories en fonction du type de données, qui est le type soi-disant de fichier. Lors de l'exploitation de fichiers de données, un traitement différent est souvent requis en fonction de différents types de fichiers. Cet exemple met en œuvre des fichiers de lecture du type de dossier spécifié et les affichant dans des contrôles de table. Cela joue un rôle dans l'attraction de la classification des fichiers dans le développement de projets.
Analyse des idées:
Parce qu'il s'agit d'une application de formulaire, regardez d'abord la couche de vue. Un contrôle de bouton JBUTTON est nécessaire pour sélectionner un dossier; Entrez le type de fichier; un contrôle de table JTable est nécessaire. Affiche le fichier du type spécifié dans le répertoire sélectionné.
Pour les contrôles de bouton, liez les méthodes de traitement des événements. . Obtenez le tableau de fichiers filtré qui remplit les conditions.
Pour les contrôles de la zone de texte, une fois que le texte à l'intérieur change, le fichier dans le chemin sélectionné doit être refilé. fichiers pour les conditions.
Étant donné que le contrôle des bouton et le contrôle de la zone de texte doivent implémenter le filtrage et l'affichage, le filtrage et l'affichage peuvent être utilisés comme méthode distincte dans cette méthode, déterminez d'abord si le chemin actuel est vide. ) Méthode de la classe de fichiers Obtenez le tableau de fichiers qui remplit les conditions, affectez la valeur à un tableau de type fichier, puis utilisez la méthode getModel () de la classe JTable pour obtenir le modèle de données du tableau et utilisez le setrow de la classe defaultTableModel pour obtenir le modèle de données. La méthode Count () efface d'abord la table, puis les boucles via le tableau de fichiers à l'aide de foreach (), crée des données de ligne de table à l'aide du tableau d'objet [] dans la boucle, appelle la méthode getName () de la classe de fichiers pour obtenir le nom de fichier et la méthode Longueur () pour obtenir la taille du fichier, la méthode LastModified () obtient la date de modification et utilisez enfin la méthode addRow () de la classe defaultTableModel pour ajouter des données de ligne au modèle tabulaire.
Le code est le suivant:
La copie de code est la suivante:
import java.awt.borderLayout;
import java.awt.eventqueue;
Importer java.awt.gridbagConstraints;
import java.awt.gridbaglayout;
Importer java.awt.insets;
import java.awt.event.actionEvent;
import java.awt.event.actionListener;
Importer java.io.file;
import java.sql.date;
import javax.swing.jbutton;
import javax.swing.jfilechooser;
import javax.swing.jframe;
import javax.swing.jlabel;
import javax.swing.jpanel;
import javax.swing.jscrollpane;
import javax.swing.jtable;
import javax.swing.jtextfield;
Importer Javax.swing.border.emptyborder;
Importer javax.swing.event.careTevent;
Importer javax.swing.event.caretListener;
import javax.swing.table.defaultTableModel;
classe publique ListCustomTypeFile étend JFrame {
/ **
*
* /
Final statique privé long SerialVersionUID = -626397510443132420L;
/ **
* Filtre d'extension personnalisé
*
* @author li zhongwei
* /
CustomFilter de classe finale privée implémente java.io.fileFilter {
@Outrepasser
public booléen accepte (fichier pathname) {
// Obtenez l'extension spécifiée définie par l'utilisateur
String extname = extnamefield.getText ();
if (extname == null || extname.isempty ())
retourne false;
if (! extname.startswith (".")) // déterminer le préfixe d'extension
extname = "."
extname = extname.tolowercase ();
// Déterminez si le nom du fichier d'extension et de filtre répond aux exigences
if (pathName.getName (). TolowerCase (). Endswith (extname))
Retour Vrai;
retourne false;
}
}
JPANEL privé ContentPane;
Jtexfield privé Extnamefield;
table JTable privée;
Dir de fichier privé;
Label JLabel privé;
/ **
* Lancez l'application.
* /
public static void main (String [] args) {
EventQueue.invokelater (new Runnable () {
public void run () {
essayer {
ListCustomTypeFile frame = new listCustomTypeFile ();
frame.setVisible (true);
} catch (exception e) {
e.printStackTrace ();
}
}
});
}
/ **
* Créez le cadre.
* /
public listCustomTypeFile () {
setTitle ("Afficher le fichier du type spécifié");
setDefaultCloseOperation (jframe.exit_on_close);
Setbounds (100, 100, 450, 300);
contentPane = new JPanel ();
ContentPane.SetBorder (New videBorder (5, 5, 5, 5));
contentPane.SetLayout (new BorderLayout (0, 0));
setContentPane (contentPane);
Jpanel Panel = new JPanel ();
contentPane.add (panneau, 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};
PANNEL.SETLAYOUT (GBL_PANEL);
JBUTTON Button = new JBUTTON ("SELECT DOSDER");
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;
PANNEL.ADD (Button, GBC_BUTTON);
label = new JLabel ("dossier");
GridbagConstraints gbc_label = new GridBagConstraints ();
gbc_label.fill = gridbagConstraints.Horizontal;
gbc_label.gridx = 1;
gbc_label.gridy = 0;
PANNEL.ADD (Label, GBC_LABEL);
JLABEL Label_1 = new JLABEL ("Entrez le nom d'extension de fichier spécifié:");
GridbagConstraints gbc_label_1 = new GridBagConstraints ();
gbc_label_1.anchor = gridbagConstraints.East;
gbc_label_1.insets = nouveaux encarts (0, 0, 0, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 1;
PANNEL.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.INSESTS = NOUVEAUX INSELTS (0, 0, 5, 0);
GBC_EXTNAMEFIELD.FILL = GRIDBAGCONSTRAINTS.HORIZONTAL;
GBC_EXTNAMEFIELD.GRIDX = 1;
GBC_EXTNAMEFIELD.GRIDY = 1;
PANNEL.ADD (EXTNAMEFIELD, GBC_EXTNAMEFIELD);
extnamefield.setColumns (10);
Jscrollpane scrollPane = new JScrollPane ();
contentPane.Add (ScrollPane, BorderLayout.Center);
table = new JTable ();
table.setAutoRoSizEMode (jTable.Auto_Resize_off);
table.setModel (new defaultTableModel (nouvel objet [] [] {}, new String [] {"Nom de fichier", "taille de fichier", "Date de modification"}) {
/ **
*
* /
Long SerialVersionUID privé statique statique = 5274214559103654856L;
Boolean [] columneditables = new boolean [] {false, false, false};
public booléen isCelleditable (Int Row, int colonne) {
return columneditables [colonne];
}
});
table.getColumnModel (). GetColumn (0) .SetPreferredWidth (220);
table.getColumnModel (). GetColumn (1) .SetPreferredWidth (85);
table.getColumnModel (). GetColumn (2) .SetPreferredWidth (110);
scrollPane.setViewportView (tableau);
}
/ **
* Sélectionnez la méthode de gestion des événements du bouton de dossier
*
* @param e
* /
protégé void do_button_actionperformed (actionevent e) {
JFileChoOSer Chooser = new JFileChoOser (); // Créer un sélecteur de fichiers
// Définissez le filtre pour sélecteur
choOser.setFileSelectionMode (jFileChooser.Directories_Only);
Chooser.showdialog (this, null);
dir = choOser.getSelectedFile ();
getLabel (). setText (dir.toString ());
// obtient le tableau de fichiers filtré qui répond aux critères
listFiles ();
}
/ **
* Afficher les fichiers dans le dossier
* /
private void listfiles () {
if (dir == null)
retour;
// Obtenez le tableau de fichiers qui répond aux critères
File [] files = dir.listFiles (new CustomFilter ());
// Obtenez le modèle de données du tableau
DefaultTableModel modèle = (defaultTableModel) table.getModel ();
Model.SetRowCount (0);
pour (fichier de fichier: fichiers) {// traverse le tableau de fichiers
// Créer des données de ligne de table
Objet [] row = {file.getName (), file.length (),
Nouvelle date (file.lastmodified ())};
modélisation.addrow (ligne); // ajouter des données de ligne au modèle tabulaire
}
}
protégé void DO_EXTNAMEFIELD_CARETUPDATE (CareTevent E) {
listFiles ();
}
JLABEL Protégé GetLabel () {
étiquette de retour;
}
}
L'effet est montré dans l'image: