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 :

(méga débutant) action impossible à cause d'un "private accès"


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut (méga débutant) action impossible à cause d'un "private accès"
    B'jour!

    Bon, je vous explique, je suis méga débutant en java. J'ai quelques bases théoriques, mais au niveau pratique de sèche.

    Faits établis (et inchangeables :p ):
    _ Je vais un petit logiciel de gestion d'une vidéothèque tout bidon
    _ Je le fait sous NetBeans 5.0 et utilise son interface pour créer ma propre interface graphique
    _ Ma base de donnée est gérée sous Oracle XE
    _ Je vais mon accès à la BDD via JDBC


    Ce que je compte faire:
    _J'ai besoin de récupérer une valeur dans ma base de donnée et l'afficher dans une textbox.
    _Ma requete permettant d'aller chercher les infos dans la BDD ne semble pas poser de problemes. Les résultats de ma requete sont recueillis dans le ResultSet nommé rsAdherent.
    _Comme précisé au dessus, je veux afficher UNE valeur pour le moment (j'afficherai les autres quand celle ci sera affichée), c'est pour cela que j'utilise un resultset.
    _Je veux afficher cette valeur dans une textbox notée textboxNom qui elle, est dans la classe GestionAdherents.java.

    Ce qu'il faut savoir aussi:
    _C'est que dans le code correspondant au bouton qui va lancer ma recherche (et donc dans Gestionadherents.java, j'ai cette ligne de code là: String nom = textboxNom.getText();

    Et mon problème est:

    _ Dans Controleur.java, quand j'essaye d'écrire la valeur dans la textbox, ma ligne correspondante est la suivante et est soulignée en rouge. Ma ligne est celle là: GestionAdherents.textboxNom.setText(monAdherent.getNom());
    et mon erreur est la suivante: textboxNom has private access in VideoClub.GestionAdherents.


    Voilà, j'ai essayé d'être assez précis. Vous aurez sans doute besoin de plus d'informations. Je vous laisse me dire lesquelles car je ne vois pas...

    Ha ben si, voilà la méthode que j'ai tenté mais qui contient cette erreur:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       public void getChargerModifs (String numadh){
     
           Mapping.importerDonneesAdherent(numadh); //Ca, ça va aller executer la requete et mettre les résultats dans le resultset rsAdherent.
     
    // Cette ligne, il se peut qu'elle aie des problèmes, "nom" "prenom" et tout ça ce sont les noms de mes colonnes dans ma BDD
             Adherent monAdherent = new Adherent(rsAdherent.getString("numadh"), rsAdherent.getString("nom"),rsAdherent.getString("prenom"),rsAdherent.getString("adressePostale"),rsAdherent.getString("codePostal"),rsAdherent.getString("ville"),rsAdherent.getString("dateExpir"),rsAdherent.getString("password"),rsAdherent.getString("creditRestant"),rsAdherent.getString("dateNaissance"));
     
    //C'est cette ligne ci dessous qui comporte l'erreur.
       //affichage des données
        GestionAdherents.textboxNom.setText(monAdherent.getNom());
    Merci BEAUCOUP de m'avoir lu et merci de me donner quelques pistes à explorer

    Bon après midi

    David

  2. #2
    Membre actif Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Points : 228
    Points
    228
    Par défaut
    D'après ce que je comprends ça veut dire que ton attribut textboxNom est privé dans la classe GestionAdherents, donc si tu veux y accéder soit tu fait un accesseur, soit tu met l'attribut en public...
    Tout passe, tout casse
    Le joint le cul lassent...


    http://www.myspace.fr/geampa_raler

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Oui je suis entièrement d'accord avec toi. Ca me rassure que ça soit "aussi simple".

    J'ai pensé aux deux choses mais, tu me dis de mettre l'attribut en public. Déjà, tu me confirmes que c'est textboxNom qui est un attribut?
    Si je ne me trompe pas, il me suffirait de mettre la ligne suivante :
    public javax.swing.JTextField textboxNom;
    Mais je n'ai pas le droit car il y a déjà cette ligne avec un PRIVATE à la place du public et elle ne peut pas être supprimée (elle est générée automatiquement par netBeans lors de la création de l'interface graphique. Donc si je mets la ligne que je viens d'écrire, il me dit qu'elle existe déjà... logique.

    L'autre solution serait de faire un accesseur. Je suis d'accord. Mais je n'y parviens pas. Déjà cet accesseur devrait se faire dans la classe gestionAdherent? Si oui j'ai déjà essayé mais je suis resté bloqué sur ce qu'il devait retourner.... si quelqu'un pouvait me dire quoi mettre...

    Et aussi, je suppose que ça va modifier des choses dans la fameuse ligne qui contient l'erreur?

    Merci de m'avoir lu et de m'aider

  4. #4
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Points : 308
    Points
    308
    Par défaut
    a priorie textBoxNom est un JTextFiel ou un truc dans le genre donc dans le cas ou c'est un JTextField il faut que tu fasse dans ta class GestionsAderents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public JTextField getTextBoxNom() {
    return textboxNom;
    }

  5. #5
    Membre actif Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Points : 228
    Points
    228
    Par défaut
    Oui l'accesseur se met dans la classe GestionAdherent...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public JTextField getTextboxNom() {
        return textboxNom;
    }
    et après pour l'utiliser c'est tout simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GestionAdherents.getTextboxNom().setText(monAdherent.getNom());
    EDIT: Arf, on m'a précédé...
    Tout passe, tout casse
    Le joint le cul lassent...


    http://www.myspace.fr/geampa_raler

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Je confirme que c'est un JTextField, je teste ça tout de suite, merci :p

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    J'ai ajouté, comme proposé, l'accesseur dans la classe GestionAdherents et j'ai remplacé la fameuse ligne buguée par celle proposée.
    J'ai toujours une erreur qui parle de "static". C'est une erreur que j'ai de temps en temps mais que je ne sais pas résoudre car dès que j'ajoute "static" quelque part, une erreur apparait autre part, et je tourne en rond.
    L'erreur est la suivante: "non-static method getTextboxNom() cannot be referenced from a static context"
    Etes-vous capable de me dire ce que je dois changer ? Ou vous faut-il plus d'info?

    Merci encore

  8. #8
    Membre actif Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Points : 228
    Points
    228
    Par défaut
    Une méthode static c'est une méthode de classe, donc si tu veux appeler ta méthode il faut créer une instance de cette classe, et l'appeler à partir de l'objet créé, vu que tu peux pas modifier ton attribut.
    Mais pour que ceci fonctionne il faut que ce soit le même objet que tu modifie et qui est afficher.

    Je sais pas si je suis clair
    Tout passe, tout casse
    Le joint le cul lassent...


    http://www.myspace.fr/geampa_raler

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Vikisme
    Je sais pas si je suis clair
    Ben le problème c'est que ça devrait être clair mais ça ne l'ai pas (j'ai reçu la formation pour que ça le soit, mais je galère...)

    "il faut créer une instance de cette classe". Ca veut dire que je devrais avoir un truc du genre: maGestionAdherents = new gestionAdherents(); ?

    Je ne sais pas trop si j'ai des choses à mettre entre parenthèses...

    Mais après? ... Désolé je vous demande beaucoup d'aide, je suis vraiment paumé et commence à désespérer parce que j'y ai passé beaucoup de temps

    Mais merci encore et toujours

  10. #10
    Membre actif Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Points : 228
    Points
    228
    Par défaut
    Bah avec un peu plus de code, par exemple celui de la classe GestionAdherants, (et même le Controleur...) ça serait plus facile de pouvoir t'aider.

    Sinon GestionAdherant, c'est la classe qui permet l'affichage, et elle est utilisée comment ? Elle contient un main ou autre, ou c'est une classe gérer par l'intermédiaire d'une autre ? C'est elle qui instancie le controleur ?

    Dans tous les cas il faut établir un lien entre cette classe et la classe Controleur (si c'est pas déjà fait), et à partir de ce lien tu peux établir l'accès à ta méthode...
    Tout passe, tout casse
    Le joint le cul lassent...


    http://www.myspace.fr/geampa_raler

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Hum ok alors pour ce qui est de la classe GestionAdherents. Elle contient donc l'interface graphique liée à ... la gestion des Adherents. Elle est utilisée par Controleur.java si je ne me trompe pas (je veux dire par là que Controleur.java appelle certaines méthodes de GestionAdherents.java.). Elle contient un "main" mais je ne sais pas s'il est très important:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                }
            });
        }
    Par contre la chose qui semble être importante à préciser maintenant est que je suis un modèle Modèle Vue Controleur... apparement

    Dans cette même classe GestionAdherents.java, il me semble important de vous donner ce qu'il y a dans l'action liée au bouton qui va lancer la recherche des infos ( à mettre dans txtboxNom) à partir d'un numéro d'adhérent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      private void boutonValiderActionPerformed(java.awt.event.ActionEvent evt) {                                              
            String numeroadherent = textboxNumeroAdherent.getText();
            String nom = textboxNom.getText();
            String prenom = textboxPrenom.getText();
            String adressePostale = textboxAdressePostale.getText();
            String codePostal = textboxCodePostal.getText();
            String ville = textboxVille.getText();
            String dateExpir = textboxDateExpir.getText();
            String password = textboxPassword.getText();
            String creditRestant = textboxCreditRestant.getText();
            String dateNaissance = textboxDateNaiss.getText();
     
            Controleur.validerDonneesAdherents(nom, prenom, adressePostale, codePostal, ville, dateExpir, password, creditRestant, dateNaissance);
        }




    Lorsque je démarre le programme, tout passe par accueil.java, qui est une classe qui ne sert qu'au démarrage, et qui, si je ne raconte pas de betise, instancie le controleur.


    Donc pour ce qui est de la classe Controleur, je vous donne mon constructeur, juste pour vous montrer que tout passe par le controleur via le schéma Modèle Vue Controleur. Je ne sais pas si ça sera utile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public Controleur() {
           fenetrePrincipale = new Accueil(this); 
           fenetreGestionAdherents = new GestionAdherents(this);
           fenetreGestionFilms = new GestionFilms(this);
           fenetreGestionLocations = new GestionLocations(this) ;
           fenetrePrincipale.setVisible(true);
       }



    Voilà n'hésitez pas si vous avez d'autre question


    1000 mercis :p

  12. #12
    Membre actif Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Points : 228
    Points
    228
    Par défaut
    Si je n'm'abuse, pour appeler ta méthode il faut alors faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fenetreGestionAdherents.getTextboxNom().setText(monAdherent.getNom());
    Tout passe, tout casse
    Le joint le cul lassent...


    http://www.myspace.fr/geampa_raler

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Il n'y a plus d'erreur lorsque je mets ça en effet, mais plus rien ne se lance. La compilation s'effectue dans problème mais plus aucune fenetre...

    Et le process lié à mon projet se lance le temps de la compilation et c'est tout Je recherche ce que je peux faire ...

    Merci encore, je vous tiens au courant !

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    J'ai une éventuelle piste pour le non affichage de la fenetre. Voici la main de ma classe GestionAdherents que je vous ai déjà mis plus haut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                }
            });
        }
    Je me suis dit qu'il était étrange qu'ici on ne fasse pas appel à une méthode d'affichage de fenêtre. Je me plante peut-être complètement mais au moins j'essaye, et pour l'instant ça ne fonctionne pas.
    A noter, dans Controleur.java j'ai cette méthode là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public void afficherGestionAdherents(JFrame uneFenetre){
            uneFenetre.setVisible(false);
            fenetreGestionAdherents.setVisible(true);
        }
    Ca n'est pas la solution au probleme? En tout cas je n'y arrive pas.

    Merci beaucoup de ne pas m'avoir encore laisser tomber

    David

  15. #15
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Bonjour divad

    Je te conseille énormément (à vrai dire, c'est une question de vie ou de mort de la programmation Java pour toi ) de faire des tutoriels sur le langage Objet Java avant de t'attaquer à développer une interface graphique en Swing !!!

    Sinon, tu risques soit d'abandonner le Java, soit de réaliser une application qui sera plus que bancale (pour ne pas dire atroce ) et que tu ne pourras jamais modifier...

    Car les problèmes que tu rencontres sont des problèmes de programmation objet Java, et non des questions sur Swing...

    Bon courage dans ton apprentissage

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Je craignais cette remarque héhé.

    Je suis en BTS Info et j'ai fait du java cette année, j'ai galéré toute l'année...

    A vrai dire j'ai mon logiciel à présenter pour le bts mercredi prochain et ça me desespère de ne pas avancer...

    Mais merci du conseil

    EDIT: Et merci à ceux qui sauront m'aider ... parce que là je suis méga bloqué. Affreux de chercher 1h sans rien trouver du tout, mais alors rien!
    Parce que une fois que j'aurai pu faire cette action d'afficher mes données, mon logiciel sera bien avancé parce que je procèderai par copier/coller dans diverses sections de mon site. Merci

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Je te donne juste mon avis perso : développe avec Eclipse.
    En tout cas pour moi, y a pas photo, c'est mieux quand on est débutant.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Hum... heu ouais mais nan comme j'ai dit c'est une chose que je ne changerai pas, je développe avec NetBeans parce que j'ai appris à développer avec et je ne changerai pas à 5 jours de l'échéance (peut-être après qui sait )

    Donc voilà, je suis assez proche du but final je suppose donc j'espère pouvoir résoudre le probleme dès ce soir pour pouvoir avancer rapidement après

    Est-il nécessaire que j'upload mon petit projet sur un compte perso Free pour que quelqu'un accepte d'y jeter un oeil?

    Merci beaucoup

    David

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Je viens d'uploader mon projet à l'adresse suivante: http://divad11.free.fr

    Les classes importantes pour mon problème sont les suivantes:

    _GestionAdherents.java du package videoclub
    _Accueil.java du package videoclub également
    _ mapping.java du package mapping
    _Controleur.java du package controleur
    _Adherent.java du package metier, où sont regroupées quelques classes métier.


    Merci à vous !!!

    David

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Test effectué: Mise en commentaire des méthodes qui ont été crées récement... Toujours pas d'affichage

    Piste interessante ...

Discussions similaires

  1. [débutant] action tous les x temps
    Par shinkyo dans le forum C
    Réponses: 13
    Dernier message: 08/06/2006, 23h59
  2. [VB.Net] "Impossible de créer le handle de fenêtre"
    Par cedric_g dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/04/2006, 12h49
  3. Réponses: 19
    Dernier message: 09/09/2005, 16h44
  4. [Débutant] Affichage impossible en local
    Par Alberto dans le forum ASP
    Réponses: 2
    Dernier message: 29/11/2003, 16h45

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