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 :

Acces aux composants d'une autre class


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 255
    Points : 100
    Points
    100
    Par défaut Acces aux composants d'une autre class
    Bonjour à tous,

    J'ai un petit problème concernant le programme que je suis en train de faire et j'ai en réalité plusieurs questions concernant des sujets différents:

    J'explique :
    En fait j'ai un classe Fenetre (extends JFrame) ou j'affiche tout.
    Le contenu de 2 autres classes est affiché dans cette Fenetre, une classe PanelCommande et PanelRoute (extends JPanel).
    Ma class PanelCommandes me permet de contrôler à l'aide de divers boutons ce qui se passe sur PanelRoute, un Graphics2D.

    Je voudrais donc savoir :

    1) Comment puis-je accéder aux composants de ma classe PanelCommande (les jButtons, JTextFiels etc...) depuis ma classe PanelRoute. J'ai essayé de les mettre en static mais il n'aime pas.

    2) Comment fermer une fenêtre sans fermer le programme ? En effet j'ai un bouton qui m'ouvre un autre fenêtre lorsque je clique dessus, mais l'orsque je ferme la fenetre qui vient de s'ouvrir, toutes les fenêtres se ferment et le programme se termine.

    3) Ma classe PanelRoute contient un Graphics2D que je redessine toute les 20ms avec mon thread, seulement ca rame beaucoup ! J'ai déjà utilisé le double buffering et mis l'antialiasing à OFF mais je rame encore. Sur mon "P4 2.5ghz, 6600GT" je veut bien mais même sur mon "dual core e6700, 1Go DDR2 800Mhz, X1950XTX" ce n'est pas fluide donc ya réellement un problème.

    Merci d'avoir pris le temps de me lire.

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 143
    Points
    143
    Par défaut
    salut,

    1- il faut passer en paramètre ta class commande dans ta class route.
    JPanel panelC = new JPanelCommande();
    JPanel panelR = new JPanelRoute(panelC);

    2- fait des JDialog ou enléve la méthode setDefaultCloseOperation

    3- qu'est ce qui rame ? Si tu affiche toutes 20s le process a donc 20s pour réaliser au max. et 20s pour un p4 c'est une éternité!

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 255
    Points : 100
    Points
    100
    Par défaut
    Merci de ta réponse philippe13.

    1) Je n'y avait pas pensé ca devrait aller.
    EDIT: je vient de tester en fait NetBeans me declare les composats en private (et le code ne peut pas etre modifié) donc j'ai l'erreur "jCheckbox1 has private access in..." Comment faire ?

    2) OK mais même en enlevant le setDefaultCloseOperation il me ferme tout quand meme, j'ai aussi un bouton quitter (qui fait System.exit(0); quand je clique dessus) mais pareil ca ferme tout.
    Je vais essayer avec un JDialog.

    3) Que je mette 20, 10 ou 1ms ca rame. En fait c'est une petit voiture (une image) qui avance sur une route (textures) en parcourant un tableau, c'est peu-être à cause de ça ? Je précise aussi que l'image scintille (des petit points blanc apparaisse succintements).

    apercu (ma voiture avance la dessus) :


    C'est donc un tableau avec comme nombre de lignes le nombre de voies et comme nombre de colones la longueur de la route.

    Merci

  4. #4
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    Je suis désolé j'ai pas beaucoup de temps alors je serai succint.

    1) Je ne connai pas Netbeans mais cela m'étonne que tes composants soit declarés en private, à moins qu'il y ait des accesseurs (get et set) ou que tu ais la possibilité de créer des méthodes dans ton PanelCommande pour acceder à ses composants. Si ce n'est pas le cas, ce qui me surprendrai, tu peux utiliser l'introspection (reflexion) pour acceder à tes composants

    2) l'instruction quitte l'appli. Utilises plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDialog.setVisible(false)
    ou à la place

  5. #5
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 255
    Points : 100
    Points
    100
    Par défaut
    1) OK merci j'ai trouvé, c'est ca que tu voulais dire je pense :
    j'ai fait une fonction dans PanelCommande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void ReinitialiserCheckbox() {
            //on remet la checkbox à zéro
            jCheckBox1.setSelected(false);
            jCheckBox1.setEnabled(true);
            jCheckBox1.setText("ajouter");
        }
    Et je peut y accéder après dans ma classe PanelRoute, après passé en paramètre ma class PanelCommandes.

    2) OK "setVisible(false)" fonctionne très bien, et j'ai mis "setDefaultCloseOperation(HIDE_ON_CLOSE);" pour que ca fasse la même chose lorsqu'on quitte par la croix.

    Voilà plus que ce problème de ralentissement !

    Merci euyeusu

  6. #6
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 255
    Points : 100
    Points
    100
    Par défaut
    avant que j'y pense...
    Je vient de voir un petit problème là, quand je scroll mon jScrollPane le contenu passe par dessus :



    J'ai essayer divers truc genre "setOpaque()" mais je ne trouve pas la solution... une idée ?


  7. #7
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    Salut,

    On dirait que sur la capture d'écran que tu as envoyé que seul les JLabel s'affiche en dehors de ton panel, mais pas les JTextField, est ce le cas ?
    Es tu sûr de bien avoir ajouter ton JLabel dans le contentPane du Panel ?

  8. #8
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 255
    Points : 100
    Points
    100
    Par défaut
    Oui en effet seul les JLabel passe à travers.

    En fait ils sont dans un JPanel qui lui est dans le JScrollPane, et ils scroll bien avec le jscrollPane donc ils sont bien dedant.

    Je ne comprend pas...

  9. #9
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 255
    Points : 100
    Points
    100
    Par défaut
    Bon j'ai trouvé le problème des Labels qui passe au travers.
    C'est parceque j'ai utilisé des Labels et non des JLabels (donc mélangé SWING et AWT) et il a pas aimé voilà maintenant tout va bien.

    Me reste plus qu'à essayer d'optimiser l'affichage

    Merci !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/11/2013, 14h24
  2. Accès aux attributs d'une autre classe
    Par alexmam15 dans le forum Débuter
    Réponses: 5
    Dernier message: 25/02/2011, 09h26
  3. Accès aux propriétés d'une autre base
    Par Domi2 dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/09/2007, 14h50
  4. Réponses: 5
    Dernier message: 20/05/2006, 09h15

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