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 :

Controle de saisi ds jtable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Par défaut Controle de saisi ds jtable
    bjr, j ai un problem concernant le control de saisi dans jtable cad par exemple : je veu bloquer la saisi dans une case de jtable les String :j veu autoriser selement la saisi des nombre et la vergule, et merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut
    Je te propose de faire une JTable de PlainDocument.
    Dans celle ci redéfini la méthode insertString en lui donnant la liste ou le type des caractères à laisser passer.

  3. #3
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Plus précisément, ajoute comme éditeur de la colonne concernée un JTextField auquel tu applique un PlainDocument.
    Tu peux aussi passer par un simple JFormattedTextField, mais tu dois dans ce cas préciser un nombre de caractères max. Et surtout, tu pourras pas vérifier si l'utilisateur entre 2 virgules au lieu d'une seule... Si ça t'intéresse quand même voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            MaskFormatter mask = null ;
     
            try {
                mask = new MaskFormatter("********");
            } catch (ParseException e) {
                System.err.println("Le masque est incorrect") ;
            }
     
            // Les caractères valides sont les chiffres et les virgules
            mask.setValidCharacters("0123456789,") ;
            JFormattedTextField field = new JFormattedTextField( mask ) ;
     
            table.getColumn("Nombre").setCellEditor( new DefaultCellEditor( field ) ) ;

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Par défaut
    merci bcp: c fé
    mais j ai un petit problem pour redifinr la methode "insertString" concernant la format pour entrer selement des chifre et une verguel
    j ai fait cette format mais ca pas
    String format = "^([0-9]+(.[0-9]*)?)?$";
    et merci encor

  5. #5
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    [mode provocateur ON]
    Ton problème il serait pas lié à l'orthographe plutôt qu'aux JTables ?
    [mode provocateur OFF]

  6. #6
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    Citation Envoyé par zikass85
    bjr, j ai un problem concernant le control de saisi dans jtable cad par exemple : je veu bloquer la saisi dans une case de jtable les String :j veu autoriser selement la saisi des nombre et la vergule, et merci d'avance
    pourqoi pas utiliser un DefaultCellEditor?

    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
     
    import java.awt.EventQueue;
    import java.awt.HeadlessException;
     
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
     
    /**
     * Created by IntelliJ IDEA.
     * User: bebe
     * Date: 03-Oct-2006
     * Time: 19:15:32
     * To change this template use File | Settings | File Templates.
     */
    public class MyTableTest extends JFrame {
     
        public MyTableTest() throws HeadlessException {
            add(new JScrollPane(new JTable(new MyTableModel(3))));
            setLocationRelativeTo(null);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(400, 300);
        }
     
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new MyTableTest().setVisible(true);
                    //To change body of implemented methods use File | Settings | File Templates.
                }
            });
        }
    }
    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
    import javax.swing.table.TableModel;
    import javax.swing.event.TableModelListener;
    
    /**
     * Created by IntelliJ IDEA.
     * User: bebe
     * Date: 03-Oct-2006
     * Time: 19:16:31
     * To change this template use File | Settings | File Templates.
     */
    public class MyTableModel implements TableModel {
    
    
        private Object data[][];
    
        int rowCount = 0;
        public MyTableModel(int rowCount) {
            this.rowCount = rowCount;
            data = new Object[rowCount][2];
            for (int i = 0; i <rowCount; i++) {
                for (int j = 0; j <2; j++) {
                    if (j%2 ==0) {
                        data[i][j] = "I'm a string";
                    } else {
                        data[i][j] = i+j;
                    }
                }
            }
        }
    
        public int getRowCount() {
            return rowCount;  //To change body of implemented methods use File | Settings | File Templates.
        }
    
        public int getColumnCount() {
            return 2;  //To change body of implemented methods use File | Settings | File Templates.
        }
    
        public String getColumnName(int columnIndex) {
            return columnIndex == 0 ? "String" : "Float";  //To change body of implemented methods use File | Settings | File Templates.
        }
    
        public Class<?> getColumnClass(int columnIndex) {
            return columnIndex == 0 ? String.class : Float.class;  //To change body of implemented methods use File | Settings | File Templates.
        }
    
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return true;  //To change body of implemented methods use File | Settings | File Templates.
        }
    
        public Object getValueAt(int rowIndex, int columnIndex) {
            return data[rowIndex][columnIndex];  //To change body of implemented methods use File | Settings | File Templates.
        }
    
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
            data[rowIndex][columnIndex] = aValue;
        }
    
        public void addTableModelListener(TableModelListener l) {
            //To change body of implemented methods use File | Settings | File Templates.
        }
    
        public void removeTableModelListener(TableModelListener l) {
            //To change body of implemented methods use File | Settings | File Templates.
        }
    }

  7. #7
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    String format = "^([0-9]+(.[0-9]*)?)?$";
    Essaie "^([0-9]+([.][0-9]+)?)?$"
    Pour obtenir le caractère '.' il faut le mettre entre crochets : "[.]". Sinon ça signifie "n'importe quel caractère".

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Par défaut
    merci à tous
    mais j ai essayé avec cette
    format "^([0-9]+([,][0-9]+)?)?$" mais cette fois il bloque aussi les vergule

  9. #9
    Membre expérimenté Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Par défaut
    Salut

    J'ai eu le meme problème que toi mais je ne l'ai pas solutionné de la meme manière. Dans mon TableModel j'ai simplement mis un try catch(NumberFormatException) lors de la conversion des chaines en nombres. Si c'est pas un nombre je remet à 0.

  10. #10
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    je comprend pas tout mais quelqu'1 peut me dire
    pourquoi le default cell editor pour les float c'est pas bon?

Discussions similaires

  1. Controle de saisie sur une liste déroulante
    Par antier dans le forum IHM
    Réponses: 3
    Dernier message: 07/12/2005, 06h42
  2. Controler une saisie
    Par philippef dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/08/2005, 11h36
  3. DBGrid personnalisé (controle de saisie numérique et date).
    Par abdelghani_k dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/04/2005, 19h50
  4. ptit probleme de controle de saisie de formulaire
    Par coachbob44 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 24/03/2005, 15h09
  5. [LG]contrôle de saisie
    Par zetterberg_10 dans le forum Langage
    Réponses: 8
    Dernier message: 10/02/2005, 14h55

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