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

Messages postés
3
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
15 février 2009
- - Dernière réponse : 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);
    
   }
   }
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
493
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
6
3
Merci
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);
    }
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 143 internautes nous ont dit merci ce mois-ci

Commenter la réponse de uhrand
Messages postés
3
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
15 février 2009
0
Merci
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
Messages postés
493
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
6
0
Merci
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
Messages postés
3
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
15 février 2009
0
Merci
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