Impossible d'afficher un jpanel avec bouton [Résolu]

flingue 3 Messages postés samedi 20 décembre 2008Date d'inscription 15 février 2009 Dernière intervention - 14 févr. 2009 à 16:02 - Dernière réponse : flingue 3 Messages postés samedi 20 décembre 2008Date d'inscription 15 février 2009 Dernière intervention
- 15 févr. 2009 à 19:39
Bonjour
je suis debutant en en java
Voici mon pb
objectif : affichiche une fenetre un avec panel qui contient deux boutons
j'ai un programme "test" et "une class VueButton", le pb c'est que le panel avec les 2 boutons ne s'affiche pas lorsque je lance le prog
rq: pas d'erreur de compil
merci de votre aide

package joliebutton ;
 import java.awt.* ;
 import javax.swing.* ;
 import java.awt.event.*;


public class Test
  {
  public static void main(String[] args)
    {
   
 JFrame fen = new JFrame ( "Test");
    Container reservoir = fen.getContentPane();
    reservoir.add(new VueButton(),BorderLayout.SOUTH);
    fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    fen.pack();
    fen.setVisible(true);
 
    }
  }

et une classe VueButton

public class VueButton extends JPanel {
 
 private JButton b1;
 private JButton b2;
 private JPanel jpa;
 public VueButton() {
  
  b1 = new JButton ("+");
  b2 = new JButton ("-");
  
  jpa= new JPanel();
  setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
  jpa.setLayout (new GridLayout (1,3));
 
  getContentPane().add(panel);


  jpa.add(b1);
  jpa.add(b2);
    
   }
   }
Afficher la suite 

4 réponses

Répondre au sujet
uhrand 493 Messages postés samedi 20 mai 2006Date d'inscription 15 juillet 2012 Dernière intervention - 15 févr. 2009 à 08:00
+3
Utile
Tu peus essayer ceci s.t.p.:

import java.awt.*;
import javax.swing.*;
public class Test {
    public Test() {
        JFrame fen = new JFrame("Test");
        Container reservoir = fen.getContentPane();
        reservoir.add(new VueButton(), BorderLayout.SOUTH);
        fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fen.pack();
        fen.setVisible(true);
    }
    public static void main(final String[] args) {
        Runnable gui = new Runnable() {
            @Override
            public void run() {
                new Test();
            }
        };
        //GUI must start on EventDispatchThread:
        SwingUtilities.invokeLater(gui);
    }
}
class VueButton extends JPanel {
    private JButton b1;
    private JButton b2;
    public VueButton() {
        setLayout(new GridLayout(1, 3));
        b1 = new JButton("+");
        b2 = new JButton("-");
        add(b1);
        add(b2);
    }
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de uhrand
flingue 3 Messages postés samedi 20 décembre 2008Date d'inscription 15 février 2009 Dernière intervention - 15 févr. 2009 à 10:25
0
Utile
Bonjour
Merci de ta réponse, cela fonctionnne, par contre est-il possible d'avoir des explications :
pourquoi vous ne mettez plus de jpanel ?
est commenent faire si je veux faire un un fichier main
avec 2 classes differentes, mon but est de avoir 3 panels dans la fenetre (un compteur, index de compteur, et plus et moins)
on final je serais censé d'utilisé la methode "Modele view Controler"
rq:on nous impose de tous separé
A+
Commenter la réponse de flingue
uhrand 493 Messages postés samedi 20 mai 2006Date d'inscription 15 juillet 2012 Dernière intervention - 15 févr. 2009 à 16:44
0
Utile
Je ne mettais plus de JPanel parceque la classe elle-même est déja un JPanel
(nous pouvons évidemment mettre un deuxième JPanel, mais il faut alors l'ajouter à l'autre).
Voici un exemple de 'Model-View-Controller' avec deux JButton et un JTextField:

import java.awt.*;
import javax.swing.*;
public class CountView extends JFrame {
    private JButton btMinus;
    private JButton btPlus;
    private JTextField tfCount;
    private Model model;
    private Controller controller;
    public CountView() {
        super("CountDemo");
        initComponents();
        controller = new Controller();
        model = new Model();
        controller.setModel(model);
        controller.setView(this);
        btPlus.addActionListener(controller);
        btMinus.addActionListener(controller);
    }
    public void updateCount() {
        tfCount.setText(String.valueOf(model.getCount()));
    }
    private void initComponents() {
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(300, 70);
        setLocationRelativeTo(null);
        btPlus = new JButton();
        btMinus = new JButton();
        tfCount = new JTextField();
        getContentPane().setLayout(new GridLayout());
        btPlus.setText("+");
        btPlus.setActionCommand("plus");
        getContentPane().add(btPlus);
        btMinus.setText("-");
        btMinus.setActionCommand("minus");
        getContentPane().add(btMinus);
        getContentPane().add(tfCount);
    }
    public static void main(final String[] args) {
        Runnable gui = new Runnable() {

            public void run() {
                new CountView().setVisible(true);
            }
        };
        //GUI must start on EventDispatchThread:
        SwingUtilities.invokeLater(gui);
    }
}

import java.awt.event.*;
public class Controller implements ActionListener {
    private Model model;
    private CountView view;
    public Controller() {
    }
    public Model getModel() {
        return model;
    }
    public void setModel(final Model model) {
        this.model = model;
    }
    public CountView getView() {
        return view;
    }
    public void setView(final CountView view) {
        this.view = view;
    }
    public void actionPerformed(final ActionEvent e) {
        if (e.getActionCommand().equals("plus")) {
            model.setCount(model.getCount() + 1);
        } else if (e.getActionCommand().equals("minus")) {
            model.setCount(model.getCount() - 1);
        }
        view.updateCount();
    }
}

public class Model {
    int count;
    public Model() {
    }
    public int getCount() {
        return count;
    }
    public void setCount(final int count) {
        this.count = count;
    }
}
Commenter la réponse de uhrand
flingue 3 Messages postés samedi 20 décembre 2008Date d'inscription 15 février 2009 Dernière intervention - 15 févr. 2009 à 19:39
0
Utile
Une derniere petite question , est ce que en general on met tous dans le m^me fichier, parceque ma prof nous force a créér differents fichier et un main avec le mons de donner possible
Et encore un grand merci pour tes réponses, je dois etudier cela parceque pour moi c'est déjà un niveau expert et il y a beaucoups chose que je n'ai jamais vue
A+
Commenter la réponse de flingue

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.