[JAVA] débutant & setvisible

débutant & setvisible [JAVA] - Java - Programmation

Marsh Posté le 11-04-2005 à 19:21:56    

Slt à tous
 
Bon j'ai un peu honte de poser ma question tellement je sens que la réponse va être simple.
Je débute en Java (mes premières heures). Après avoir lu plusieurs tuto et autres docs, je me suis lancé.
J'ai donc installé Jbuilder (java 1.4) et ai créé un petit projet tout bête pour débuter.
 
J'ai également placé un cadre avec un "hello world" à l'interieur grâce à Swing.
 
J'aboutis au code suivant :
 

Code :
  1. package edt;
  2. import javax.swing.JComponent;
  3. import javax.swing.JPanel;
  4. import java.awt.*;
  5. import javax.swing.JLabel;
  6. /**
  7. * <p>Titre : Emploi du temps</p>
  8. *
  9. * <p>Description : Gestion EDT</p>
  10. *
  11. * <p>Copyright : Copyright (c) 2005</p>
  12. *
  13. * <p>Société : </p>
  14. *
  15. * @author
  16. * @version 1.0
  17. */
  18. public class EdtFrame extends JComponent {
  19.     public EdtFrame() {
  20.         try {
  21.             jbInit();
  22.         } catch (Exception ex) {
  23.             ex.printStackTrace();
  24.         }
  25.         this.setBounds(200,200,100,50);
  26.         this.setFocusable(true);
  27.         this.setVisible(true);
  28.     }
  29.     public static void main(String[] args) {
  30.         EdtFrame edtframe = new EdtFrame();
  31.     }
  32.     private void jbInit() throws Exception {
  33.         jPanel1.setBounds(new Rectangle(14, 12, 417, 331));
  34.         jLabel1.setText("Hello world" );
  35.         this.add(jPanel1);
  36.         jPanel1.add(jLabel1);
  37.     }
  38.     JPanel jPanel1 = new JPanel();
  39.     JLabel jLabel1 = new JLabel();
  40. }


 
Aucune erreur à la compilation mais aucune fenêtre n'apparait à l'écran.
J'ai testé avec un "show()" à la place du "setVisible()" mais rien n'y fait (d'ailleurs "show()" est en deprecated apparement)
 
Donc voilà j'ai l'air tout idiot devant ce problème je ne vois vraiment pas d'ou ça vient.
(peut-être du coté de la configuration de jbuilder je ne sais pas trop)
 
Si quelqu'un à une idée je suis preneur :)
 
 
Merci d'avance.


Message édité par ofbdood le 11-04-2005 à 19:22:32
Reply

Marsh Posté le 11-04-2005 à 19:21:56   

Reply

Marsh Posté le 11-04-2005 à 19:31:08    

public class EdtFrame extends JComponent
 
essaie plutot un extends JFrame
 
et pour le setVisible ya un boolean en argument : setVisible(true)

Reply

Marsh Posté le 11-04-2005 à 19:33:12    

hmm, je pense que le JComponent n'est pas une frame et doit être contenu dans une frame.
donc à la place de extends JComponent, tu peut mettre JFrame.
 
Par contre ensuite dans jbInit, à la place de "this.add(jPanel1);", tu dois mettre
"this.getContentPane().add(jPanel1);" car le contentPane de ta frame est le seul élément qui peut contenir des éléments visibles (à part peut-être pour les menus).
 
Aussi, au final, tu auras ta fenetre "Hello World !" + une mini fenetre vide car ta classe d'entrée sera une JFrame (mini vide) qui en construit une autre (hello world) dans ton main
 
le mieux dans ce cas est de faire deux classes : une pour ta frame et une pour le main qui extends rien du tout


---------------
The Rom's, à votre service
Reply

Marsh Posté le 11-04-2005 à 21:16:14    

Ok ça m'a l'air bien là.
Par contre la mini fenêtre dont tu parles elle est normalement visible ? (parce que là moi je vois uniquement ma fenêtre principale, c'est tant mieux mais bon j'aime faire les choses proprement :p)
 
Sinon grand merci à vous 2

Reply

Marsh Posté le 11-04-2005 à 21:34:00    

ah oui c'est vrai
c'est en fait le faux problème que j'avais au début quand je faisais des extends JFrame qui comportaient un élément JFrame  :lol: bien débile quoi  :pfff:  
allez promis, la prochaine fois j'essaie de me rappeler exactement les bêtises que j'ai fait avant de répondre à une question, même si c'est pas gagné ;)


---------------
The Rom's, à votre service
Reply

Marsh Posté le 12-04-2005 à 08:27:04    

rajoute this.pack(); apres les .add();

Reply

Marsh Posté le 12-04-2005 à 11:10:42    

ça permet de faire quoi le this.pack(); ?

Reply

Marsh Posté le 12-04-2005 à 11:19:29    

dans mon tout premier cours de Swing, ya une ligne ou il est écrit qu'il faut utiliser la methode pack() après les add() pour que l'affichage se fasse correctement.
Je suis bête et discipliné...

Reply

Marsh Posté le 12-04-2005 à 11:24:58    

Ha d'accord et bien si tu le dis :)
 
Par contre effectivement quand je sélectionne l'onglet "conception" dans jbuilder il m'ouvre mon appli mais ça bug complètement (fond transparent qui déconne un peu). J'ai essayé de rajouter "this.pack();" mais ça ne change rien.


Message édité par ofbdood le 12-04-2005 à 11:29:34
Reply

Marsh Posté le 12-04-2005 à 11:43:44    

pack() sert à dimensionner le container au format des elements qu'il contient. une sorte d'autofit


---------------
The Rom's, à votre service
Reply

Marsh Posté le 12-04-2005 à 11:43:44   

Reply

Marsh Posté le 12-04-2005 à 11:53:18    

TheRom_S a écrit :

pack() sert à dimensionner le container au format des éléments qu'il contient. une sorte d'autofit


 
merci, je sais maintenant à quoi ca sert :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed