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?
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?
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; } }
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.
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!
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.
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
avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MyTableModel dataModel = new MyTableModel (t,nomColonnes); table = new JTable(dataModel);
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; } }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager