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 :

[ SWING ] Ouvrir une fenêtre dans son parent


Sujet :

AWT/Swing Java

  1. #1
    Invité
    Invité(e)
    Par défaut [ SWING ] Ouvrir une fenêtre dans son parent
    Bonjour,

    j'ai la méthode main qui crée une JFrame.
    Dans cette JFrame j'ai un menu qui devrait me permetre de créer un nouveau document.
    je voudrais donc pouvoir créer une nouvelle fenêtre qui serais placée dans ma JFrame.

    En plus clair : Comment placer une fenêtre dans son parent ?

    Merci

  2. #2
    Membre actif Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Points : 288
    Points
    288
    Par défaut
    En utilisant le JDesktopPane et les JInternalFrame

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si j'ai bien compris le truc,

    je Cree un JFrame, Dans ce JFrame j'ajout un JdesktopPane auquel j'ajoute des JInternalFrame.

    Mais ce que je ne comprend pas, c'est commebnt structuer le truc.

    j'ai une classe MenuBar() qui
    - crée les JMenu et JMenuItem
    - ajoute les actions aux JMenuItem

    j'ai une classe Main() qui
    - ajoute un menu avec setJMenuBar(new MenuBar());
    - rend visible ma JFrame
    - comporte la méthode main(String[] args)

    J'ai une classe Document() qui
    - etend JInterNalFrame()

    Lorsque je clique sur Nouveau dans mon menu j'instancie Document()

    Mais je ne parviens pas à ajouter 'document' à mon JdesktoPane.

    j'ai essaue de faire une méthode de Main() pour récupérer le jdesktopPane ou pour lui ajouter le JInternalFrame mais ça ne va pas.

    J'ai du mal à structurer l'ensemble..

    Comment feriez-vous ?

  5. #5
    Membre actif Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Points : 288
    Points
    288
    Par défaut
    Selon moi, il faut considérer ta JFrame comme le centre de ton interface graphique, elle doit avoir comme attribut le JDesktopPane.
    Tu ajoute une méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void ajouterDocument()
    {
    Document nouveauDocument=new Document();
    monDesktopPane.add(nouveauDocument);
    }
    Et en passant ta JFrame à ta MenuBar et en la conservant comme attribut, tu peux appeler cette méthode lors du clic.

    Je te conseille de passer par des diagrammes UML de classe pour bien architecturer ton application. C'est toujours un peu chiant à faire, mais tu gagne souvent beaucoup de temps au moment de coder.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Justement c'est la mon gros probléme :
    j'ai :
    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
     
    public class Main extends JFrame {
     
        JDesktopPane FenetreConteneur;
     
        public Main(JDesktopPane FenetreConteneur) {
     
            super("Mon applic");          
            ...
            this.FenetreConteneur = FenetreConteneur;
            add(FenetreConteneur);        
            ...
            setVisible(true);
     
        }
     
        public void ajouterDocument(){
            Document nouveauDocument = new Document();
            FenetreConteneur.add(nouveauDocument);
        }
    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
     
    public class MenuBar extends JMenuBar {
     
        public MenuBar(JFrame parent) {
     
            ...
            JMenuItem file_new = new JMenuItem("Nouveau");
            file_new.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent actionEvent) {
                    FenetreParent.ajouterDocument();
                }
            });
            file.add(file_new);
            ...
        }
     
    }
    Mais me méthode ajouterDocument() n'est pas accesible dans MenuBar.

    La réponse est surement tres bête mais ...

  7. #7
    Membre actif Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Points : 288
    Points
    288
    Par défaut
    remplace l aligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FenetreParent.ajouterDocument();
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parent.ajouterDocument();
    et ça devrait fonctionner. La méthode que tu as utiliser serait valable pour une méthode static, se serait possible mais pas très propre, Java c'est de l'objet...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Ha, moi j'avait plutôtr remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
        public MenuBar(JFrame parent) {
    ...
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        public MenuBar(Main parent) {
    ...
    Et ça vas aussi.

    Merci

  9. #9
    Membre actif Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Points : 288
    Points
    288
    Par défaut
    Ah, ouais, excuse moi, convention de codage, pour moi les majuscules déterminent les classes, mais je suppose qu'en fait FenetreParent correspond à ton attribut.

    Alors à ce moment là tu peux conserver ton ancien code et mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((Main)FenetreParent).ajouterDocument();
    du casting explicite.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Ben oui,
    Main et ma classe Main() qui étend JFrame.
    Je ne vois pas ce que tu veux dire ?
    Ca n'a plus rien à avoir avec ma question d'origine mais bon...

    Sur ce je verais demain parceque la c'est fini.

    Merci

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

Discussions similaires

  1. ouvrir une iframe dans son contexte
    Par laurentSc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/01/2012, 15h03
  2. [XL-2007] Ouvrir une fenêtre dans une feuille EXCEL
    Par cedill23 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/02/2011, 17h33
  3. Ouvrir une fenêtre dans flash
    Par Quintus dans le forum Dynamique
    Réponses: 14
    Dernier message: 12/09/2008, 13h33
  4. Ouvrir une fenêtre dans un panel
    Par dim07 dans le forum Débuter
    Réponses: 6
    Dernier message: 10/01/2008, 18h09
  5. Ouvrir une adresse dans une seule fenêtre
    Par efficks dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/04/2006, 10h45

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