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 :

JTable non modifiable


Sujet :

Composants Java

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut JTable non modifiable
    Bonjour, j'utilise une JTable et je voudrais qu'elle ne soit pas modifiable c'est à dire qu'on puisse sélectionner une ligne mais sans pouvoir avoir le focus dans les colonnes.
    Comment faire?

  2. #2
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Points : 128
    Points
    128
    Par défaut
    Il faut redéfinir le TableModel de cette JTable avec
    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
     
    import javax.swing.table.DefaultTableModel;
     
     
    public class MyTableModel extends DefaultTableModel {
     
    	.......
     
    	/**
             * Permet de rendre la JTable non editable
             */
    	public boolean isCellEditable(int row, int col) {
    		return false;
    	}
    }

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    En fait, j'ai déjà essayé ça mais ça ne marche toujours pas.
    Si je clique sur une cellule et que je reclique (ou j'appuye sur F2), un curseur s'affiche et je peux modifier le texte.

  4. #4
    Membre habitué Avatar de bygui
    Homme Profil pro
    PLM/ALM
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : PLM/ALM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 185
    Points
    185
    Par défaut
    e1lauren a raison, il est impossible de modifier ton tableau si tu redefinis la methode isCellEditable de ton model.
    Tu as du faire une gaf
    Laisser un message après le Bug!

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Je te donne le code de la classe :

    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.Dimension;
    import java.awt.event.*;



    public class BRecherche extends JPanel implements ActionListener, KeyListener
    {

    public BRecherche(PanneauResultat pr, Journal j, Saisie s)
    {
    this.j = j;
    this.s = s;
    this.pr = pr;
    s.getChampRecherche().addKeyListener(this);
    recherche = new JButton("Rechercher");
    rechercheA = new JButton("Recherche Avancée");
    add(recherche);
    recherche.addActionListener(this);
    rechercheA.addActionListener(this);
    add(rechercheA);
    setVisible(true);
    }

    public void keyPressed(KeyEvent e)
    { int car = e.getKeyCode();

    if(car==KeyEvent.VK_ENTER)
    rechercher();

    }

    public void keyReleased(KeyEvent e)
    {}

    public void keyTyped(KeyEvent e)
    {
    }

    public void actionPerformed(ActionEvent e)
    {
    JButton b = (JButton) e.getSource();
    if(b==recherche)
    rechercher();
    else if(b==rechercheA)
    {
    //System.exit(0);
    }
    }

    private JButton recherche, rechercheA;
    private PanneauResultat pr;
    private Journal j;
    private Saisie s;
    private Object [][] t;
    private Object [] nomColonnes;
    private JTable table;


    private void rechercher()
    {
    pr.setVisible(false);

    RechercheYahoo rY = new RechercheYahoo(s.getRecherche(),j,pr);
    Résultat[] r = rY.getRésultats();



    if(r.length>0)
    {
    nomColonnes = new Object[]{"No","Nom du Site ","Description","Adresse","Moteur"};
    t = new Object[r.length][];
    for(int i=0; i<r.length; i++)
    t[i]=new Object[]{new Integer(i+1), r[i].getTitre(),r[i].getDescription(),r[i].getAdresse(),r[i].getMoteur()};

    table = new JTable(t,nomColonnes);

    table.setShowGrid(false);
    //table.setDragEnabled(false);

    }

    //table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    JScrollPane js = pr.getScrollPane();
    pr.remove(js);
    js = new JScrollPane(table);
    pr.setScrollPane(js);
    js.setSize(new Dimension(750,350));
    js.setPreferredSize(new Dimension(750,350));
    pr.add(js);
    pr.setVisible(true);
    s.setModif(false);
    }

    private TableModel dataModel = new AbstractTableModel(){ //Inner class
    public int getColumnCount(){return nomColonnes.length;}
    public int getRowCount(){return t.length;}
    public Object getValueAt(int l, int c) {return t[l][c];}
    public String getColumnName(int col) {return (String)nomColonnes[col];}
    public Class getColumnClass(int cl) {return getValueAt(0,cl).getClass();}
    public boolean isCellEditable(int rows, int columns) {return rows<3 && columns<=0;}
    };

    public PanneauResultat getPr(){return pr;}
    }

    Aucune autre classe ne modifie la JTable.

  6. #6
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Points : 128
    Points
    128
    Par défaut
    Pense à mettre a la balise [code], sinon ton code à l'air assez crade
    Tu n'affectes pas du tout ton model à ta JTable...

    en gros ca doit ressembler à ce genre de chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyTableModel dataModel = new MyTableModel (t,nomColonnes);
    table = new JTable(dataModel);
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class MyTableModel extends DefaultTableModel {
     
    	.......
     
    	/**
             * Permet de rendre la JTable non editable
             */
    	public boolean isCellEditable(int row, int col) {
    		return false;
    	}
    }

Discussions similaires

  1. [Swing / JTable] Rendre les cellules d'un JTable non éditables
    Par Jérôme_20 dans le forum Composants
    Réponses: 20
    Dernier message: 10/02/2011, 10h32
  2. Réponses: 3
    Dernier message: 30/09/2008, 11h28
  3. [swing][JTable]Cellules non modifiables
    Par Pascmar dans le forum Composants
    Réponses: 3
    Dernier message: 21/09/2007, 00h14
  4. [JTable] Cellule non modifiable
    Par Mister Nono dans le forum Composants
    Réponses: 4
    Dernier message: 11/03/2006, 18h50
  5. Attributs d'un record en property non modifiables
    Par WebPac dans le forum Langage
    Réponses: 15
    Dernier message: 11/04/2005, 12h59

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