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

Composants Java Discussion :

Cell d'une JTable non editable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de _kal_
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Par défaut Cell d'une JTable non editable
    Bonsoir,

    Voilà j'ai besoin d'utiliser une JTable avec aucune cellule modifiable, mais par defaut elles le sont toutes.

    J'ai pourtant bien redéfini la méthode isCellEditable dans ma classe étandant AbstractTableModel. Voici mon code :

    MediumTable.java:
    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
     
    package pobj.mediatheque.view;
    import javax.swing.table.AbstractTableModel;
     
    public class MediumTable extends AbstractTableModel {
     
    	private Object[][] donnees;
    	private final String[] titres;
     
    	public MediumTable(Object donnees[][], String titres[]) {
    		this.donnees = donnees;
    		this.titres = titres;
    	}
     
    	public int getColumnCount() {
    		return donnees[0].length;
    	}
     
    	public Object getValueAt(int parm1, int parm2) {
    		return donnees[parm1][parm2];
    	}
     
    	public int getRowCount() {
    		return donnees.length;
    	}
     
    	public String getColumnName(int col){
    		return titres[col];
    	}
     
    	public boolean isCellEditable(int row, int col) {
    		return false;
    	}
    }
    SearchResult.java :
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    package pobj.mediatheque.view;
    import java.awt.Dimension;
    import java.util.ArrayList;
     
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JTable;
    import javax.swing.ListSelectionModel;
     
    import pobj.mediatheque.media.CD;
    import pobj.mediatheque.media.Cassete;
    import pobj.mediatheque.media.DVD;
    import pobj.mediatheque.media.Medium;
    import pobj.mediatheque.recherche.Filtrage;
     
    public class SearchResult extends JFrame {
     
    	private JTable table;
    	private ArrayList<Medium> med;
    	private String[] resultats;
    	private JPanel pan; 
    	private Object[][] mesResultats;
    	private final String[] titreColonnes = { "Type", "Auteur", "Titre", "Format/Zone/Durée", "Exemplaire restant", "Exemplaire total"};
     
    	public SearchResult(ArrayList<Medium> med) {
    		super("Resultats recherche");
    		this.med = med;
     
    		makeGUI();
    		configureGUI();	
    		this.med = med;
    	}
     
    	public void makeGUI() {
    		makeResultats();
    		makeTable();
     
    		this.add(table);
    	}
     
    	public void makeResultats()
    	{
    		Medium tmp;
    		mesResultats = new Object[med.size()][titreColonnes.length];
    		for (int i = 0 ; i < med.size() ; i++) {
    			tmp = med.get(i);
    			mesResultats[i][0] = tmp.getDescriptionMedium();
    			mesResultats[i][1] = tmp.getAuteur();
    			mesResultats[i][2] = tmp.getTitre();
    			mesResultats[i][3] = tmp.getParam();
    			mesResultats[i][4] = tmp.getNbExemplaireDispo();
    			mesResultats[i][5] = tmp.getNbExemplaireTotal();
    		}
    	}
     
    	public void makeTable() {
    		table = new JTable(mesResultats, titreColonnes);
    		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    	}
    	public void configureGUI() {
    		this.setSize(new Dimension(500, 300));
    		setLocationRelativeTo(null);
    		this.setVisible(true);
    	}
     
    }
    Merci pour vos indications

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    C'est bien beau d'avoir créé un TableModel, mais si tu ne l'utilises pas tu n'iras pas loin, tu utilises encore le contructeur de JTable base de tableaux alors que tu devrais utiliser celui à base de TableModel ^^

  3. #3
    Membre confirmé Avatar de _kal_
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Par défaut


    Merci beaucoup, ça marche

  4. #4
    Membre confirmé Avatar de _kal_
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Par défaut
    Par contre, la fenetre créée n'affiche pas les noms de colonnes, pourquoi ?

  5. #5
    Membre confirmé Avatar de _kal_
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Par défaut
    C'est bon j'ai capté, fallait envelopper le tout dans un JScrollPane.

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour celà la JTable ne doit pas être directement mise dant ton JPanel (ou ta JFrame) mais dans un JScrollPane qui sera lui placé dans ton JPanel ou ta JFrame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.add(new JScrollPane(table));

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JTable] rendre une cellule non editable après edition
    Par Phil29 dans le forum Composants
    Réponses: 3
    Dernier message: 31/08/2010, 19h00
  2. [debutant]editer une JTable
    Par dxavier dans le forum Composants
    Réponses: 7
    Dernier message: 20/07/2006, 10h49
  3. [JTable] non editable
    Par delph1983 dans le forum Composants
    Réponses: 15
    Dernier message: 24/04/2006, 18h53
  4. [Débutant] JTable non editable+DocumentListener
    Par nicotine002 dans le forum Composants
    Réponses: 9
    Dernier message: 04/01/2006, 00h48
  5. Non réception d'un evènement sur une JTable
    Par Kant dans le forum Composants
    Réponses: 4
    Dernier message: 28/05/2004, 10h38

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