Impossible d'afficher un jpanel avec bouton

Résolu
flingue Messages postés 3 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 15 février 2009 - 14 févr. 2009 à 16:02
flingue Messages postés 3 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 15 février 2009 - 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);
    
   }
   }

4 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
15 févr. 2009 à 08:00
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);
    }
}
3
flingue Messages postés 3 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 15 février 2009
15 févr. 2009 à 10:25
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+
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
15 févr. 2009 à 16:44
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;
    }
}
0
flingue Messages postés 3 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 15 février 2009
15 févr. 2009 à 19:39
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+
0
Rejoignez-nous