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

JDBC Java Discussion :

Actualiser JTable


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut Actualiser JTable
    bonjour,

    J'essaye d'actualiser ma JTable avec un bouton.

    J'ai trois table qui me permettent d'afficher les données de la BDD postgresql et je sais pas ou mettre le nouveau model parmi mes trois table et la syntaxe pour actualiser les données avec la méthodeFireTableDataChanged.

    Je vous donne Mon code MainAfficheClient et j'espère avoir votre aide :
    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
     
    public class MainAfficheClient
    {
      public static void main(String[] args)
      {
        Connection conn = getConnection();
        try
        {
            Statement st = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,
                    								   ResultSet.CONCUR_READ_ONLY );
     
            ResultSet rs = st.executeQuery( "SELECT * FROM tabclients" );
            AfficheClient rtm = new AfficheClient( rs );
     
            TablePanel tablePanel = new TablePanel( rtm );
     
            JFrame mainFrame = new JFrame( "Affiche table " );
            mainFrame.add( tablePanel, BorderLayout.CENTER );
            mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
            mainFrame.setSize( 640, 480 );
            mainFrame.setVisible( true );
     
     
        } 
        catch ( SQLException e )
        {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
     
      public static Connection getConnection()
        {
          Connection connection = null;
          boolean ok = false;
     
          //--- chargement en mémoire du pilote
          try
         {
           Class.forName( "org.postgresql.Driver");
           ok = true;
         } 
         catch ( ClassNotFoundException e )
         {
           System.out.println( "ERREUR chargement du pilote: pilote non trouvé" );
           e.printStackTrace();
         }
     
         //--- connexion à la base de données
         if ( ok )
         {
           try
           {
             connection = DriverManager.getConnection( "jdbc:postgresql://localhost:5433/tabclient","postgres","anissa39");
           } 
           catch ( SQLException e )
           {
             System.out.println( "ERREUR de connexion à la base de données: " + 
            		 "jdbc:postgresql://localhost:5433/tabclient" );
             e.printStackTrace();
           }
         }
     
          return connection;
        }
     
    }
    Merci.

  2. #2
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Je ne vois pas d'instanciation de JTable dans ton code. Mais sinon il faut fournir un modèle à tes JTable et tu peux regarder du coté du binding pour synchroniser le contenu de la table avec un liste. Il suffira alors de lancer la requête et de modifier e contenu de la liste dans l'action du bouton pour que cela se mette à jour dans l'interface (et ne pas créer une nouvelle instance de cette liste).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut
    Le problème que j'arrive pas à faire un modèle et je vois pas si je dois l'afficher dans ma table AfficheClient :

    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
    public class AfficheClient extends AbstractTableModel{
     
     
     
     
      public AfficheClient( ResultSet resultSet )
      {
        this.resultSet = resultSet;
     
     
     
        try 
        {
          this.resultSetMetaData = resultSet.getMetaData();
        } 
        catch (SQLException e) 
        {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
      private void Actualiser(Object data2, Object column2) {
     
     
    }
     
      public int getColumnCount()
      {
    	try 
        {
          return resultSetMetaData.getColumnCount();
        } 
        catch (SQLException e) 
        {
          // TODO Auto-generated catch block
          e.printStackTrace();
          return 0;
        }
      }
     
      @Override
      public int getRowCount()
      {
    	try
        {
          resultSet.last();
          return resultSet.getRow();
        } 
    	catch (SQLException e)
        {
          // TODO Auto-generated catch block
          e.printStackTrace();
          return 0;
        }
      }
     
      @Override
      public Object getValueAt(int rowIndex, int columnIndex) 
      {
        try
        {
          resultSet.absolute( rowIndex + 1 );
          return resultSet.getObject(columnIndex + 1 );
        } 
        catch (SQLException e)
        {
          // TODO Auto-generated catch block
          e.printStackTrace();
          return null;
        }
      }
     
      public String getColumnName( int column )
      {
        try 
        {
          return resultSetMetaData.getColumnName( column + 1 );
        } 
        catch (SQLException e) 
        {
          // TODO Auto-generated catch block
          e.printStackTrace();
          return "";
        }
      }
     
      private ResultSet resultSet;
      private ResultSetMetaData resultSetMetaData;
     
    }
    Merci .

  4. #4
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Le model (AfficherClient) il a l'air ok.

    Ton TablePanel il vient d'où ? Pourquoi ne pas utilisé un JTable ?
    La y a un How To de base :
    http://download.oracle.com/javase/tu...nts/table.html

    Il te faut un TableModelListener.

  5. #5
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Peut-être que j'ai pas bien compris ton problème mais à priori il n'y a pas de moyen de récupérer les changements en base automatiquement, la base de donnée n'appelle pas le programme, donc il faut typiquement requêter la base de données tous les x secondes.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut
    Bonjour,

    Comment peut-on faire pour avoir une actualisation automatique de JTable tous les x secondes?

Discussions similaires

  1. Actualisation JTable au bout de n entrées
    Par peemoney dans le forum Composants
    Réponses: 12
    Dernier message: 25/09/2012, 18h15
  2. Actualisation JTable Java
    Par benf35 dans le forum Composants
    Réponses: 2
    Dernier message: 17/04/2012, 13h37
  3. Actualisation JTable avec BDD
    Par Mokujil dans le forum Composants
    Réponses: 1
    Dernier message: 27/05/2009, 14h24
  4. Actualiser l'affichage jtable
    Par Blast dans le forum Composants
    Réponses: 6
    Dernier message: 21/04/2006, 17h45
  5. [jTable] Actualiser un tableau
    Par oOoOuuhmAn dans le forum Composants
    Réponses: 7
    Dernier message: 14/03/2006, 18h05

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