[Java - Swing] Pourquoi mon JButton ne s'affiche pas ?

Pourquoi mon JButton ne s'affiche pas ? [Java - Swing] - Java - Programmation

Marsh Posté le 03-03-2007 à 19:46:22    

Le code :
 

Code :
  1. public class SignBoxApplet extends JApplet {
  2.        @Override
  3. public void init() {
  4.  // TODO Auto-generated method stub
  5.  super.init();
  6.  setSize(800, 600);
  7. }
  8. public SignBoxApplet()  {
  9.  drawGUI();
  10. }
  11. private void drawGUI() {
  12.  leftPanel = new JPanel(new BoxLayout(leftPanel, BoxLayout.Y_AXIS));
  13.  add(leftPanel);
  14. }
  15. private void drawLeftPanel() {
  16.  leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS));
  17.  //leftPanel.setSize(leftPanel.getPreferredSize());
  18.  JButton addButton = new JButton("Un boutton" );
  19.  addButton.setAction(new AddButtonAction());
  20.  leftPanel.add(addButton);
  21. }
  22. }


 
1) Quand je lance mon applet, rien ne s'affiche, pourquoi ? Que manque-t-il ? ... j'ai pourtant tout "adder" :??:
 
2) J'ai associé un AddButtonAction comme gestionnaire d'évènement au JButton. En fait c'est une classe à part, dans un fichier à part, dans un package ("actions" ) à part. Dans la méthode "actionPerformed", j'ai besoin du container du JButton : il s'agit donc du leftPanel. Le problème, c'est que dans la callback "actionPerformed" je ne peux accéder au "leftPanel" :/. Du coup, je mets la variable en "public static" dans la classe SignBoxApplet ... et je sais que c'est très cracra ! mais comment résoudre ce problème pour séparer le code de mes actions du graphisme de l'applet ?
 
Merci :)

Reply

Marsh Posté le 03-03-2007 à 19:46:22   

Reply

Marsh Posté le 04-03-2007 à 18:45:44    

Et si tu faisais un setVisible(true) dans ton init ???
Je dit ca mais j'y connais rien en JApplet ^^

Reply

Marsh Posté le 05-03-2007 à 17:43:43    

zenzen77 a écrit :

Et si tu faisais un setVisible(true) dans ton init ???
Je dit ca mais j'y connais rien en JApplet ^^


 
t'inquiète j'ai trouvé d'où ça venait ;). Et par défaut, les composants sont visibles (vaut mieux sinon ce serait reloud de toujours mettre setVisible à true :o). En fait, les JApplet utilise un BorderLayout par défaut ; il faut donc spécifier la zone d'affichage lors de l'instruction leftPanel.add(addButton); et donc mettre par exemple leftPanel.add(addButton, BorderLayout.WEST);
Voilà ;)

Reply

Sujets relatifs:

Leave a Replay

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