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] Problème pour rafraichir


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Points : 21
    Points
    21
    Par défaut [JTable] Problème pour rafraichir
    bonjour a tous,

    j'utilise un model dans lequel je met mes données dans une varable du type Object[][]. j'ai fait une methode qui me permet de mettre a jour les
    donnees:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class TabModel extends AbstractTableModel {
        private String[] columnNames = null;
        private Object[][] data = null;
     
    public void setData(Object[][] data) {
                this.data = data;
                fireTableDataChanged();
        }
    ...
    }
    ensuite j'ai creer un jdialog dans lequel j'ai mis une jtable et je met a jour les données suivant l'etat d'un jbutton de la maniere suivante :

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    public class HeritageDiag extends JDialog {
        private javax.swing.JPanel jContentPane = null;
        private JRadioButton jRadioButton = null;
        private JRadioButton jRadioButton1 = null;
        private JPanel jPanel = null;
        private JTable jTable = null;
        private JScrollPane jScrollPane = null;
     
        public HeritageDiag(Frame owner) {
            super(owner);
            initialize();
            this.setLocationRelativeTo(owner);
        }
     
        private void initialize() {
            this.setTitle("Historique");
            this.setSize(500, 350);
            this.setContentPane(getJContentPane());
        }
     
        private javax.swing.JPanel getJContentPane() {
            if (jContentPane == null) {
                jContentPane = new javax.swing.JPanel();
                jContentPane.setLayout(new java.awt.BorderLayout());
                jContentPane.add(getJPanel(), java.awt.BorderLayout.NORTH);
                jContentPane.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
                jContentPane.add(getJTextField(), java.awt.BorderLayout.SOUTH);
                getButtonGroup();
            }
            return jContentPane;
        }
     
        private JRadioButton getJRadioButton() {
            if (jRadioButton == null) {
                jRadioButton = new JRadioButton();
                jRadioButton.setText("etat");
                jRadioButton.setSelected(true);
                jRadioButton.addItemListener(new java.awt.event.ItemListener() {
                    public void itemStateChanged(java.awt.event.ItemEvent e) {
                        if (jRadioButton.isSelected()) {
                            ((TabModel) getJTable().getModel()).setData(getStatFilesObj());
                        }
                    }
                });
            }
            return jRadioButton;
        }
     
        private JRadioButton getJRadioButton1() {
            if (jRadioButton1 == null) {
                jRadioButton1 = new JRadioButton();
                jRadioButton1.setText("rapport");
                jRadioButton1.addItemListener(new java.awt.event.ItemListener() {
                    public void itemStateChanged(java.awt.event.ItemEvent e) {
                        if (jRadioButton1.isSelected()) {
                            ((TabModel) getJTable().getModel()).setData(getOutFilesObj());
                        }
                    }
                });
            }
            return jRadioButton1;
        }
     
        private JPanel getJPanel() {
            if (jPanel == null) {
                jPanel = new JPanel();
                jPanel.add(getJRadioButton(), null);
                jPanel.add(getJRadioButton1(), null);
            }
            return jPanel;
        }
     
        private JTable getJTable() {
            if (jTable == null) {
                jTable = new JTable();
                TabModel myTabModal = new TabModel();
                String[] ColumnName = { "N°", "date/heure", "fichier" };
                myTabModal.setColumnNames(ColumnName);
                Object[][] dataEtat = { { new Integer(0), new Date(), "fichier" } };
                myTabModal.setData(getStatFilesObj());
                jTable.setModel(myTabModal);
                jTable.addMouseListener(new java.awt.event.MouseAdapter() {
                    public void mouseClicked(java.awt.event.MouseEvent e) {
                        if (e.getClickCount() == 2) {
                            if (getJRadioButton().isSelected()) {
                                openFile((File) getStatFiles().get(jTable.getSelectedRow()));
                            } else {
                                openFile((File) getOutFiles().get(jTable.getSelectedRow()));
                            }
                            //getJScrollPane().repaint();
                        }
                    }
                });
            }
            return jTable;
        }
     
        private JScrollPane getJScrollPane() {
            if (jScrollPane == null) {
                jScrollPane = new JScrollPane();
                jScrollPane.setViewportView(getJTable());
            }
            return jScrollPane;
        }
     
        private ButtonGroup getButtonGroup() {
            if (buttonGroup == null) {
                buttonGroup = new ButtonGroup();
                buttonGroup.add(getJRadioButton());
                buttonGroup.add(getJRadioButton1());
            }
            return buttonGroup;
        }
    ...
    }
    j'ai remarquer que lorsque je redimentionne le jdialog la table
    se met a jour.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Essai de faire un repaint sur ta JTable ou sur ta JDialog.
    Ou bien de faire un updateUI() sur ta JTable
    Ou bien tout ca en même temps

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    merci barbu0055 y a du progres.

    par contre c'est pas encore tout a fait ca. les données apraissent bien mais elles restent limitées par la taille du tableau precedent.

    des que je redimentionne la fenetre les donnes manquantes aparaisent.

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    une solution qui peut etre criticable est d'appeller la methode pack() juste apres le setdata. il semblerait que le redimentionnement de la fenetre soit necessaire pour afficher les donnees.

    je suis preneur d'autre solutions.

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

Discussions similaires

  1. [2.x] Problème pour rafraichir les données en base
    Par timal78 dans le forum Symfony
    Réponses: 4
    Dernier message: 18/02/2014, 23h04
  2. Réponses: 2
    Dernier message: 23/01/2014, 21h27
  3. Problème pour rafraichir un rapport Webi
    Par LP-mpascolo dans le forum Webi
    Réponses: 2
    Dernier message: 30/10/2008, 14h54
  4. Réponses: 4
    Dernier message: 21/02/2007, 17h08
  5. Problème pour rafraichir les composants
    Par agougeon dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 30/09/2006, 21h12

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