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 :

tout simplement


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Par défaut tout simplement
    Bonjour.

    En fait je me pose une question toute simple.

    J'ai 3 classes :

    1/ hérite de JFrame
    2/ hérite de JMenuBar (MyMenu)
    3/hérite de JTextArea.

    dans la première voilà ce que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setJMenuBar(new MyMenu());
    Comment faire le plus proprement possible pour que lors d'une action sur le menu je puisse ajouter un JTextArea au panel de ma JFrame ???

    Je pourrais préciser dans la classe MyMenu l'objet auquel il appartient mais il existe peut être un moyen plus simple non ?

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je sais pas trop si c'est ca ta question ou pas...

    Mais tu peut faire quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyMenu menu = new MyMenu(); //Tu déclares donc un menu(comme il hérite de JMenu, il a toutes les memes fonctions)
    setJMenuBar(menu);
    menu.addActionListener(this);
    EDIT : En fait, je me suis loosé, ca ce serait si ca héritais de JMenu et pas de JMenuBar... ;

  3. #3
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Dans ta classe MyMenu tu créées donc tes MenuItem?

    Si c'est bien le cas il faut que dans cette classe tu ais une référence de ta fenêtre.

    Ensuite tu n'as plus qu'à lui ajouter ton composant JTextArea...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Par défaut
    merci à vous pour la rapidité je pensai faire comme pollux007 mais l'idée de wichtounet me plais aussi je vais tester les deux ^^ ...

    Par contre là je vois que j'ai un petit problème je ne vois pas pourquoi.

    Dans ma classe qui crée la JFrame j'ai fait (pour l'instant c'est la méthode pollux007) une méthode qui est appelé lors d'une action sur un JMenuItem sur l'autre classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void addNew(JTextArea a)	{
    	System.out.println("ajout");
     
    	getContentPane().add(new JTextArea());
    }
    mais le JTextArea ne s'ajoute pas alors que si je met le même code dans le constructeur ça marche pourquoi donc alors qu'on rentre bien dans la fonction j'ai vérifié.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Par défaut
    Pour faire plus simple je vais mettre le code qui correspond à mon problème :

    Classe de la JFrame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class MyNotepad extends JFrame	{
       public MyNotepad()	{
         .
         .
         setJMenuBar(new MyMenu(this));
       }
     
       public void addNew(JTextArea a)	{
         System.out.println("ajout");
         getContentPane().add(new JTextArea());
       }

    Classe du menu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class MyMenu extends JMenuBar implements ActionListener	{
      private MyNotepad notepad;
     
      public MyMenu(MyNotepad notepad)	{
        this.notepad=notepad;
        .
        .
      }
     
      if(evt.getSource() == niou )	{
        notepad.addNew(new JTextArea());
      }

  6. #6
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Déja un truc bizarre, mais ca doit pas etre de la que vient le problème :

    dans ta fonction addNew, tu passes en paramètre un JTextArea (a) et ensuite tu ajoutes un new JTextArea à ton contentPane, ca ne sert à rien d'en avoir 2

  7. #7
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Les menus tu peux très bien les faire dans la classe de ta JFrame. Enfin tu peux séparer pour une meilleure visibilité mais je pense que de passer la référence de ta fenetre est la meilleure solution dans ce cas-là.

    Dans ton addNew, rajoute un validate().

    Pis juste une chose, lorsque tu change l'état de tes composants il serait bien d'utiliser SwingUtilities.invokeLater() ou SwingUtilities.invokeLaterAndWait().

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Par défaut
    ah merci à vous vive le validate() pollux007 ^^ merci à toi aussi wichtounet

  9. #9
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Ce que dit witchounet est juste.

    J'avais pas vu mais il ne sert à rien de passer un JTextArea à ta méthode dans ce cas là.

    La méthode devrait plutot etre nommée comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void addNewArea(){.....
    ou alors si tu passes bien un objet JTextArea

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void addNewArea(JTextArea a){
      this.getContentPane.add(a);
    }

  10. #10
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Eh, toi, t'as oublié tes cours à l'IUT pour poser une question comme ça?
    C pour faire quoi comme programme ça, toujours ton truc de classement de foot?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Par défaut
    non on a fait un editeur de texte à la fac mais je le refais pour pouvoir ouvrir plusieur document avec des onglets ^^

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

Discussions similaires

  1. [Ruby] Ecrire tout simplement dans un Textview
    Par skystef dans le forum GTK+
    Réponses: 1
    Dernier message: 28/01/2008, 09h42
  2. [DOM] Ajouter un noeud, tout simplement
    Par MeTaLCaM dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 29/06/2007, 11h01
  3. WinForms et Events tout simplement
    Par sayag dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/06/2007, 03h15
  4. [VB6] Lire un mp3 tout simplement
    Par sliverman dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/02/2007, 16h07
  5. Tout simplement connecter un serveur..
    Par ndsaerith dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 03/08/2006, 09h43

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