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

AWT/Swing Java Discussion :

sélection d'une ligne et rafraichissement d'une table


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut sélection d'une ligne et rafraichissement d'une table
    Bonjour,

    Dans le cadre de mon stage je réalise une appli en java(SWING) contenant entre autre une JTable tirant ses données d'une base de données.
    Je dois pouvoir voir les données, ajouter, modifier, ou supprimer des lignes(1 par 1).
    Jusque la pas de probleme.

    le hic c que ma base peut évoluer autrement que par la JTable j'avais donc penser a une méthode qui toutes les secondes réaffiche la table pour les modif éventuelles.

    Le probleme c'est que depuis si je sélectionne une ligne de la table la sélection est annulée dès que la table est réaffichée m'empechant ainsi de modifier ou de supprimer.

    Si vous avez une suggestion je suis tout ouïe.
    merci d'avance

  2. #2
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    salut,

    tu utilises un model de données avec ta jtable ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    oui j'utilise un model mais seulement pour l'affichage.
    quand j'ajoute ou supprime je modifie la base pour la réafficher je ne me sers pas des firetable ou autres

  4. #4
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    Ton daemon ou autre processus qui verifie regulierement si il y a eu des maj dans la base, il faut qu'il pousse les modif dans ton model (ne pas recreer un model)
    ensuite avec les firetable je pense que la maj ne suprime pas la selection courante

    sinon si tu as moyen d'itentifier la ligne (avec un object ou autre),
    le mettre en memoire et le reselectionner apres le rafraichissement (l'ideal serait de suivre les index)

    ensuite il suffit de reselectionner les lignes avec un setRowSelectionInterval()

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par biozaxx Voir le message
    Ton daemon ou autre processus qui verifie regulierement si il y a eu des maj dans la base, il faut qu'il pousse les modif dans ton model (ne pas recreer un model)
    "poussez les modif": tu veux dire que mon model doit se charger des modifications de la base

    c vrai que ma réinitialisation recrée le model a chaque fois.(ça je vais le corriger de suite)

    J'avais déja pensé a garder la ligne par l'index de ses données dans la table et je pense que je vais faire ainsi, je voulais seulement savoir si il n'y avait pas plus simple

  6. #6
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    je ne sais pas comment tes modif sont faites dans la base, c'est peut etre une autre application qui s'occupe des modifs.
    Ce que je veux dire c'est qu'il te faut un processus qui resynchronise ton model avec le contenu de ta base de donnée.

    si les modifications sont fait via la meme application alors c'est encore plus simple, au moment ou tu recuperes les modifications faite par l'utilisateur et que tu envoie la maj dans la base , tu peux modifier en parallele ton model comme ca tu economises en plus des discussions entre la base et l'appli

    pour l'histoire de l'index il faut faire attention a ce que la ligne selectionnée se trouve toutjour au meme index apres mise a jour, ce qui n'est pas forcement le cas si il y a eu des insertion ou supression.

    en tout cas fait d'abord une mise a jour de ton model et je pense que la ligne restera selectionnée.

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Pour la question de l'index tu as entierement raison et c'est pour cela que je ne m'en suis pas contenté.

    C'est bien la même application qui modifie la base.

    j'ai une classe "DacBd" qui contient toutes mes requetes pour maj la bd

    les modif auto de la base sont exécutés a partir d'un thread qui appelle les méthodes de DacBd.

    "tu peux modifier en parallele ton model comme ca tu economises en plus des discussions entre la base et l'appli": tu pourrais me renseigner un peu plus la dessus plz?

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    ça y'est j'ai reussi a passer les modifications de mes données par le model ainsi ma base et mon tableau sont modif en parallèle m'évitant ainsi un aller retour du tableau vers la base pour actualiser.

    probleme :
    la sélection disparait toujours mais moins fréquement, selon les modifications apportées à la base.
    J'ai utilisé "fireTableStructureChanged()" est-ce le bon choix pour la mise à jour d'une colonne,d'une ligne, ou de quelques cellules ,pour l'ajout ou la suppression

  9. #9
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    non, fireTableStructureChanged() est appelé quand il y a des nouvelle colonnes etc ....

    je pense qu'il vaut mieux utiliser fireTableDataChanged() si beaucoup de cellules ont été mise a jour, ou bien si tu connais les lignes qui ont été modifiées tu peux appeler : fireTableRowsUpdated(int firstRow, int lastRow)

  10. #10
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup ça marche, la sélection reste meme sur la ligne en cours de modif.
    C'est parfait merci de ton aide.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/06/2010, 10h36
  2. [VBA-E]Selection d'une ligne a partir d'une certaine colonne
    Par deathsurfer dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 29/06/2006, 16h36
  3. afficher une ligne en particulier d'une table
    Par kabool dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 10/03/2006, 09h19
  4. selectionner une ligne au hasard dans une table
    Par dark_vidor dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/06/2005, 12h01
  5. lancer une mdb a partir d'une ligne de commande
    Par dpie dans le forum Access
    Réponses: 5
    Dernier message: 30/11/2004, 15h01

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