Bonsoir à tous.
Je viens de suivre un tutopour la création d'un jTable au sein d'une interface graphique swing et dans le but d'afficher une icone :
J'ai cherché à l'adapter à mon projet actuel :
Mon problème est l'affichage de cette icone (elle fait 20 x 20 pixels)
Je suis sous netbeans et mon image se situe exactement dans le même répertoire que toutes mes classes java. Je l'ai ajouté avec un drag and drop.
J'aimerais savoir si quelqu'un pouvait se pencher sur l'affichage de l'icone et m'expliquer pourquoi elle ne s'affiche pas.
Voici mes classes :
class fenetreEtudiant :
class ModeleJTableau
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
45
46
47
48
49
50
51
52
53
54
55 package IGP; import javax.swing.*; import java.awt.*; //import java.awt.event.*; public class fenetreEtudiant extends JFrame{ public JFrame fenetreE; public JPanel pane; public JPanel center; public JLabel intro; private JTable tableau; private ModeleJTableau modele; public fenetreEtudiant() { fenetreE = new JFrame("Titre ?????"); fenetreE.setContentPane(createContent()); fenetreE.setLocationRelativeTo(null); fenetreE.pack(); fenetreE.setResizable(true); fenetreE.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fenetreE.setVisible(true); } private JPanel createContent() { pane = new JPanel(); center = new JPanel(); intro = new JLabel("Bienvenue :", JLabel.CENTER); pane.setLayout(new BorderLayout()); center.setLayout(new BorderLayout()); pane.add(intro, BorderLayout.NORTH); pane.add(center, BorderLayout.CENTER); modele = new ModeleJTableau(); tableau = new JTable(modele); tableau.setDefaultRenderer(Icon.class, new TelechargementCellRenderer()); center.add(new JScrollPane(tableau), BorderLayout.CENTER); return pane; } public static void main(String[] args) { new fenetreEtudiant(); } }
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
45
46
47
48
49
50
51
52
53
54
55
56
57 package IGP; import java.util.*; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.table.AbstractTableModel; public class ModeleJTableau extends AbstractTableModel { private final List<Fichiers> donnees = new ArrayList<Fichiers>(); private final String[] entetes = {"Fichiers", "Enseignant","Téléchargement"}; private Icon icone = new ImageIcon("dossier.png"); public ModeleJTableau() { super(); donnees.add(new Fichiers("Java pour les nuls V1", "Toto", icone)); donnees.add(new Fichiers("Java pour les nuls V2", "Tata", icone)); } public int getRowCount() { return donnees.size(); } public int getColumnCount() { return entetes.length; } @Override public String getColumnName(int columnIndex) { return entetes[columnIndex]; } public Object getValueAt(int rowIndex, int columnIndex) { switch(columnIndex){ case 0: return donnees.get(rowIndex).getTitre(); case 1: return donnees.get(rowIndex).getEnseignant(); default: return null; } } public void addFichiers(Fichiers fichier) { donnees.add(fichier); fireTableRowsInserted(donnees.size() -1, donnees.size() -1); } public void removeFichiers(int rowIndex) { donnees.remove(rowIndex); fireTableRowsDeleted(rowIndex, rowIndex); } }
class Fichiers :
class TelechargementCellRenderer :
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 package IGP; import javax.swing.Icon; public class Fichiers { private String titre; private String enseignant; private Icon telechargement; public Fichiers(String titre, String enseignant, Icon telechargement){ super(); this.titre = titre; this.enseignant = enseignant; this.telechargement = telechargement; } public String getTitre() { return titre; } public void setTitre(String newTitre) { this.titre = newTitre; } public String getEnseignant() { return enseignant; } public void setPrenom(String newEnseignant) { this.enseignant = newEnseignant; } }
Bon au pire ce n'est pas très grave si cela ne venait pas à marcher, ma deuxième requête était de faire en sorte que cette icône, serve de bouton pour le téléchargement de dossier, et après avoir essayé pas mal de chose, je n'arrive toujours pas à en faire un actionlistener, au mieux, je peux créer un bouton, et un événement déclencher lors de la sélection complété de la ligne...
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 package IGP; import java.awt.Component; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; public class TelechargementCellRenderer extends DefaultTableCellRenderer { private Icon img; public TelechargementCellRenderer() { super(); img = new ImageIcon("dossier.png"); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); setText(""); setIcon(img); return this; } }
Je pense qu'il serait plus propre si le dossier était directement cliquable.
Merci d'avance.
Partager