IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

JTable et affichage d'icone + insertion de JButton


Sujet :

Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut JTable et affichage d'icone + insertion de JButton
    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 :

    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();
        }
    }
    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
    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 :

    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;
        }
    }
    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
    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;
        }
    }
    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...
    Je pense qu'il serait plus propre si le dossier était directement cliquable.

    Merci d'avance.

  2. #2
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    A priori il te manque la fonction public Class<?> getColumnClass(int columnIndex) dans ton model pour retourner un type Icon.

    De plus,
    pour pouvoir cliquer sur l'icon il faut créer une classe Editor et utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getColumnModel().getColumn(3).setCellEditor(new ButtonBarsEditor());
    Tu est partie pour utiliser un Icon je te conseil plutôt un JButton.

    Tu peut regarder le code source de mon application pour avoir une idée de comment réaliser une barre de bouton dans ton Jtable (ou juste un bouton)

    http://code.google.com/p/jtimetracki...2FtachesJTable
    Sébastien

Discussions similaires

  1. Insertion icone dans un JButton
    Par JTABLE dans le forum NetBeans
    Réponses: 2
    Dernier message: 23/12/2013, 15h29
  2. [SWT][IHM]Probleme d'affichage des icones
    Par barbu0055 dans le forum SWT/JFace
    Réponses: 6
    Dernier message: 03/03/2006, 12h05
  3. Icon pour pour JButton dans une Jtable + pb colonnes
    Par dim_italia dans le forum Composants
    Réponses: 3
    Dernier message: 22/02/2006, 18h05
  4. prob d'affichage d'une Icone dans un JButton
    Par Zoroastre dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 14/01/2006, 13h57
  5. Affichage d'icones et de texte dans un TListView
    Par Captain_JS dans le forum C++Builder
    Réponses: 1
    Dernier message: 29/10/2004, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo