Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java] Comment afficher des composants dans une Frame?

Sujet résolu
    26 mars 2006 à 10:26:05

    Bonjour,
    je n'arrive pas à afficher les composants sur une Frame.
    Pourtant, j'ajoute les composants à la frame avec la méthode add(Component) et ensuite j'affiche la Frame avec la méthode setVisible(true) mais la fenêtre est vide... :(

    Voici les codes sources:
    app.java (l'applet)
    import java.awt.*;
    import java.applet.*;

    public class App extends Applet {
            MaFrame fenetre;
           
            public void init() {
                    fenetre=new MaFrame();
                    Font f = new Font("TimesRoman",Font.BOLD+Font.ITALIC,20);
                    this.setBackground(Color.GRAY);
                    this.setForeground(Color.BLUE);
                    this.setFont(f);
            }

            public void paint(Graphics g) {
                    g.drawString("Tout se passe dans la fenêtre!", 50, 60 );
            }
    }


    MaFrame.java (la classe frame)
    import java.awt.*;
    import java.awt.event.*;

    public class MaFrame extends Frame{
            //ATTRIBUTS
            Button b1, b2;
           
            //CONSTRUCTEUR
            public MaFrame() {
                    //Initialisation du titre et de la dimension de la fenêtre
                    this.setTitle("Fenêtre MaFrame");
                    this.setSize(200,150);
                    this.setBackground(Color.CYAN);
                   
                    //on ajoute les composants
                    b1 = new Button("Bouton");
                    b2 = new Button("Autre bouton");
                    this.add(b1);
                    this.add(b2);
                   
                    //pour finir, on affiche la fenêtre
                    this.setVisible(true);
            }//fin constructeur     
    }


    Voilà, pourriez-vous me dire où est le problème? :euh:
    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2006 à 12:22:04

      Le layout par défaut dans une frame Java est le BorderLayout (avec les composantes NORTH, SOUTH, CENTER, WEST, EAST). Si tu veux afficher des composants, il faut leur dire ou ils doivent aller :)
      donc this.add(bouton,BorderLayout.NORTH) si tu veux qu'il soit en haut, .SOUTH si tu veux qu'il soit en bas etc......
      Ils existent d'autres layout aussi qui sont la GridLayout(nbLignes, nColonnes) pour faire une grille.
      Si tu veux changer de layout, tu fais un this.setLayout(new Gridlayout(2,2)) par exemple....
      NB ^^ : le layout est ce qu'on appelle un gestionnaire de fenêtre, c'est lui qui gère la position des composants dans la fenêtre (je dis çà pour les initiés ;) )
      • Partager sur Facebook
      • Partager sur Twitter
        26 mars 2006 à 12:29:46

        le problème viens surtout que tu met tes composant dans une frame qui doit se trouver dans une applet mais dans les applet il ne faut pas créer de fenêtre (ou en tout cas il faut l'ajouter dans la l'applet) mais je pense que ca marcherais bcp mieux si tu oubliait ta classe framee et que tu rajoutais tes composant directement dans la méthode init de l'applet.
        • Partager sur Facebook
        • Partager sur Twitter
          26 mars 2006 à 15:11:23

          Citation : Mythrys

          dans les applet il ne faut pas créer de fenêtre


          on peut tout à fait créer une fenêtre à partir d'une applet. Dans le programme que j'ai fait, on ne voit aucune utilité, vu qu'on peut le faire plus simplement en mettant les composants sur l'applet mais c'est que j'ai envie d'utiliser une barre de menu ce qui n'est pas accessible dans une applet.

          Citation : Mythrys

          ou en tout cas il faut l'ajouter dans la l'applet


          Tu peux m'expliquer comment "ajouter" une fenêtre dans une applet? o_O
          Normalement, une fenêtre c'est indépendant du navigateur web, elle doit pas rester bloquée dans une applet...

          Citation : Mythrys

          je pense que ca marcherais bcp mieux si tu oubliait ta classe framee et que tu rajoutais tes composant directement dans la méthode init de l'applet.


          Nan ça marcherait de la même façon... ce serait juste moins lisible...


          J'ai compris pourquoi ça ne fonctionnait pas, c'est le 2ème bouton qui s'affichait à l'emplacement du premier, l'effaçant, dû au BordrLayout qui les affiche tous les deux à gauche.
          Merci à N@shh pour m'avoir montré l'existence du layout par défaut ^^
          • Partager sur Facebook
          • Partager sur Twitter

          [Java] Comment afficher des composants dans une Frame?

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown