J'en peux plus de ces jtables
J'ai crée une jtable avec un model
le principe est de récuperer la liste des fichiers dans un répertoire et en sélectionnant le nom du fichier (un jbutton) afficher une miniature dans un jpanel.
Jusqu'ici pas de problème
La ou ça se corse, c'est que j'ai un jbutton indépendant de la jtable qui modifie le nom du fichier. La modification du nom du fichier s'effectue correctement mais suite à ça je n'arrive pas à mettre à jour le nom du fichier dans ma jtable.
Pour mettre à jour je relance mon initTabFichier, à ce moment là le nom apparait modifié mais dés que je passe la souris au dessus dunom dans la table l'ancien nom revient
Créationde la jtable :
Création du modele de table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 private void initTabFichier() { TAB_Model = new TableAbstractModele(); TAB_RacinePath = new JTable(TAB_Model); JScrollPane TAB_Scroll = new JScrollPane(TAB_RacinePath); TableColumn colonne1 = TAB_RacinePath.getColumnModel().getColumn(0); colonne1.setPreferredWidth(100); TableColumn colonne2 = TAB_RacinePath.getColumnModel().getColumn(1); colonne2.setPreferredWidth(425); TableColumn colonne3 = TAB_RacinePath.getColumnModel().getColumn(2); colonne3.setPreferredWidth(70); for(int i = 0; i < TAB_RacinePath.getRowCount(); i++) { TAB_RacinePath.setRowHeight(i, 40); } TAB_RacinePath.getTableHeader().setReorderingAllowed(false); TAB_RacinePath.getTableHeader().setResizingAllowed(false); colonne1.setCellRenderer(new TableLabelRenderer()); colonne1.setCellEditor(new TableLabelEditor()); colonne3.setCellRenderer(new TableLabelRenderer()); colonne3.setCellEditor(new TableLabelEditor()); colonne2.setCellRenderer(new TableButtonRenderer()); colonne2.setCellEditor(new TableButtonEditor(viewPDF, LAB_NbPagePdf)); image.add(TAB_Scroll); TAB_Scroll.setBounds(128, 124, 595, 457); }
Editor de la jtable :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 import javax.swing.table.AbstractTableModel; public class TableAbstractModele extends AbstractTableModel { private String[] title = { "Date", "Nom du Fichier", "Taille"}; private Object[][] data = PathManager.getPathListFileName(); ; public int getColumnCount() { return this.title.length; } public int getRowCount() { return this.data.length; } public Object getValueAt(int row, int col) { return this.data[row][col]; } public String getColumnName(int col) { return this.title[col]; }//affichage des noms de colonne public boolean isCellEditable(int row, int col) { return true; } }
Bouton renommant le fichier (et mets à jour la jtable)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 import java.awt.*; import java.awt.event.*; import java.io.File; import java.util.EventObject; import javax.swing.*; import javax.swing.event.CellEditorListener; import javax.swing.table.TableCellEditor; public class TableButtonEditor extends JButton implements TableCellEditor { private Object value; private static String nomFichier; private PdfManager view; private JLabel textePage; public TableButtonEditor(PdfManager viewPDF, JLabel texte) { this.view = viewPDF; this.textePage = texte; addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { view.setFichierPdf(new File(Informations.rootPath + "/" + nomFichier)); view.setPagePdf(1); textePage.setText(view.getCurrentPagePdf() + " sur " + view.getNbPagePdf()); } }); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { this.value=value; nomFichier = value.toString(); setFocusable(false);setBackground(new Color(0x73fbe6)); setText((value==null)?"":value.toString()); return this; } public void cancelCellEditing() {} public boolean stopCellEditing() { return true; } public Object getCellEditorValue() { return value; } public boolean isCellEditable(EventObject anEvent) { return true; } public boolean shouldSelectCell(EventObject anEvent) { return false; } public void addCellEditorListener(CellEditorListener l) {} public void removeCellEditorListener(CellEditorListener l) {} public static String getValue() { return nomFichier ; } }
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 if(source == BOU_Rename) { FenetreDialogue FEN_Rename = new FenetreDialogue(this, "Renommer le Fichier", true); String newNomFichier = FEN_Rename.setDialog(); FEN_Rename.dispose(); if(newNomFichier != null) { File oldFichier = new File(Informations.rootPath + "/" + TableButtonEditor.getValue()); File newFichier = new File(Informations.rootPath + "/" + newNomFichier + ".pdf"); viewPDF.setClosePdf(); boolean qsd = oldFichier.renameTo(newFichier); System.out.println(qsd); try { Thread.sleep(500); } catch (InterruptedException ex) {} initTabFichier(); }
Partager