MouseListener sur JTable désactivée [Résolu]

mdrcedrick 54 Messages postés dimanche 12 septembre 2004Date d'inscription 22 novembre 2007 Dernière intervention - 25 juil. 2007 à 14:21 - Dernière réponse : theguitou 75 Messages postés mardi 9 septembre 2003Date d'inscription 14 janvier 2009 Dernière intervention
- 25 juil. 2007 à 16:52
bonjour à tous

j'ai une JTable que j'ai désactivée pour ne pas pouvoir en modifier le contenu

seulement j'aurai quand même besoin de pouvoir cliquer sur les cellules
pour en connaitre leur position afin de lancer diverses fonctions

or avec un MouseListener sur une JTable en
.setEnabled(false);        je n'obtient
pas de coordonnées mais -1 / -1

avez-vous une idée sur le "comment que je pourrais faire" ?


merci d'avance





don't cross the crocked step
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
theguitou 75 Messages postés mardi 9 septembre 2003Date d'inscription 14 janvier 2009 Dernière intervention - 25 juil. 2007 à 14:39
3
Merci
Salut,

1) Pour "désactiver" les cellule d'un JTable, il faudrait plutot le faire en écrivant un TableModel (extends AbstractTableModel), et en réécrivant la méthode public boolean isCellEditable(int row, int col). Voir : http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data

2) Pour récupérer la cellule au la colonne séléctionné, il faudrait plutot utiliser un ListSelectionListener. Voir : http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#selection

Sorry

Merci theguitou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de theguitou
Meilleure réponse
cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 25 juil. 2007 à 15:20
3
Merci
et de toute ;o) facon si le coeurs t en di ;o) avec les coord de la souris en pixel tu peu facilement recalculer ca position ds la table ;o) .... puisque tu as acce à toute les variables d UI ;o)

GodConan ;o)

Merci cs_GodConan 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de cs_GodConan
mdrcedrick 54 Messages postés dimanche 12 septembre 2004Date d'inscription 22 novembre 2007 Dernière intervention - 25 juil. 2007 à 15:41
0
Merci
merci messieurs


j'ai réussi à me dépatouiller avec tout celà

cependant il me reste 2 petits soucis


_ le premier, j'utilise un look and feel et lorsque je survole la
JTable il me surligne les lignes, le fait de bloquer la JTable comme je
l'avais fait ne provoquais pas le surlignement des lignes alors qu'avec
le code donné par theguitou il me le fait quand même, mais je ne vais
quand même pas réécrire le look and feel, ce n'est pas de mon niveau !

_ second problème, dans ma classe j'ai donc instancié la JTable de cette manière :
public    
JTable    maTable    
=     new JTable(new AccordPianoJTable);

au lieu de
public    
JTable    maTable    
=     new JTable(11, 7);

comme je l'avais fait avant

or plus loin dans mon code je rempli la JTable de cette manière
this.maTable.setValueAt        (..., ..., ...);

cependant maintenant ca ne fonctionne plus avec la nouvelle méthode

que faut-il modifier dans les méthodes redéfinies de AccordPianoJTable
pour pouvoir inscrire le texte voulu dans les cellules de ma JTable ?



don't cross the crocked step
Commenter la réponse de mdrcedrick
theguitou 75 Messages postés mardi 9 septembre 2003Date d'inscription 14 janvier 2009 Dernière intervention - 25 juil. 2007 à 15:55
0
Merci
probleme 1 : Tu peut toujours changer les couleurs (et mettre du blanc)

 
void
setSelectionBackground(Color selectionBackground)


          Sets the background color for selected cells.

 
void
setSelectionForeground(Color selectionForeground)


          Sets the foreground color for selected cells.

import awt.*;

maTable.setSelectionBackground(Color.WHITE) ...

Problème 2 : peut être this.maTable.getModel().setValueAt (..., ..., ...) si tu as fais un TableModel
Commenter la réponse de theguitou
mdrcedrick 54 Messages postés dimanche 12 septembre 2004Date d'inscription 22 novembre 2007 Dernière intervention - 25 juil. 2007 à 16:00
0
Merci
problème 1 ok, mais problème 2 toujours pas d'affichage



don't cross the crocked step
Commenter la réponse de mdrcedrick
theguitou 75 Messages postés mardi 9 septembre 2003Date d'inscription 14 janvier 2009 Dernière intervention - 25 juil. 2007 à 16:34
0
Merci
Ca va etre difficile d'aller plus loin sans voir un peu ton code, notament ton AccordPianoJTable ...
Commenter la réponse de theguitou
mdrcedrick 54 Messages postés dimanche 12 septembre 2004Date d'inscription 22 novembre 2007 Dernière intervention - 25 juil. 2007 à 16:39
0
Merci
public class AccordPianoJTable extends         AbstractTableModel

           
           
           
           
    implements TableModel

{

    public         void
           
addTableModelListener       
    (TableModelListener arg0) {}

   

    public        int
           
    getColumnCount       
            ()

    {

        return 7;

    }

   

    public         String
           
getColumnName           
        (int arg0)

    {

        return null;

    }

   

    public         int
           
    getRowCount       
           
        ()

    {

        return 11;

    }

   

    public         Object
        getValueAt   
           
           
    (int arg0, int arg1)

    {

        return null;

    }

   

    public         boolean
        isCellEditable   
           
            (int arg0, int
arg1)

    {

        return false;

    }

   

    public         void
           
removeTableModelListener       
(TableModelListener arg0)    {}

   

    public         void
           
setValueAt           
           
        (Object arg0, int arg1, int
arg2){}

}



don't cross the crocked step
Commenter la réponse de mdrcedrick
theguitou 75 Messages postés mardi 9 septembre 2003Date d'inscription 14 janvier 2009 Dernière intervention - 25 juil. 2007 à 16:42
0
Merci
Tu n'aurais pas oublié sa :
private String[] columnNames = ...
private Object[][] data = ...

??
Commenter la réponse de theguitou
mdrcedrick 54 Messages postés dimanche 12 septembre 2004Date d'inscription 22 novembre 2007 Dernière intervention - 25 juil. 2007 à 16:50
0
Merci
je ne  l'ai pas mis car je ne vois pas quoi en faire vu que ma
Table je la rempli après en faisant mes .setValueAt(..........) dans
une boucle de BDD
try

        {

            métaOrdre = resultat.getMetaData ();

            while (resultat.next())

            {

           
    int       
    ligne       
    =        0;

           
    String       
texte        =   
    "<html>";

           
    for (int colonne = 1; colonne <=
métaOrdre.getColumnCount (); colonne++)

                {

                    switch (colonne)

                    {

           
            case
1    :    texte    
+=    "" + resultat.getString(colonne) +
"
";       
           
           
    break;

           
            case
2    :    texte    
+=    resultat.getString(colonne) +
"
";           
           
           
           
        break;

           
            case
3    :    texte    
+=    resultat.getString(colonne) + "
";           
           
           
           
           
    break;

           
            case
4    :    texte    
+=    resultat.getString(colonne) +
"
";           
           
           
           
        break;

           
            case
5    :    texte    
+=   
ChainesDeCaractères.separeTelephone(resultat.getString(colonne));   
break;

           
           
case     6    :   
ligne        =   
   
Integer.parseInt(resultat.getString(colonne).substring(0, 2)) -
8;           
    break;

                    }

                }

           
    this.maTable.setValueAt   
    (texte, ligne, colonneJTable);

            }

        }

        catch (SQLException aSQLE)

        {

           
JOptionPane.showMessageDialog    (null, "Echec lors de
la lecture des résultats\n" + aSQLE.getMessage(), "Erreur",
JOptionPane.ERROR_MESSAGE);

        }

don't cross the crocked step
Commenter la réponse de mdrcedrick
theguitou 75 Messages postés mardi 9 septembre 2003Date d'inscription 14 janvier 2009 Dernière intervention - 25 juil. 2007 à 16:52
0
Merci
Ah et puis j'ai lu un peu vite :

Tu réimplémente des méthodes ... pour qu'elle ne fasse rien ?!?!

Efface tous sauf isCellEditable et en particulier :

public Object getValueAt (int arg0, int arg1)
{
  return null;
}
public void removeTableModelListener (TableModelListener arg0)    {}
public void setValueAt (Object arg0, int arg1, int arg2){}

et rajoute :

private String [] columnNames = {"colonne 1", ..., "colonne 7"};
private Object [][] data = new Object[11][7];
Commenter la réponse de theguitou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.