Rechercher : dans
Par :

Java ajoute JButton sur JPanel

Dernière réponse le 19 mar 2009 à 21:51:25 Gennosuke, le 17 mar 2009 à 23:37:08 
 Signaler ce message aux modérateurs

Bonjour,

Je n'arrive pas à rajouter un bouton sur un JPanel lorsque je clique sur un autre JButton présent dans un autre JPanel. Pourtant, j'arrive bien à changer la couleur de mon JPanel lorsque je clique sur mon bouton. Est-ce que vous pourriez m'indiquer comment je peux faire ?

Merci beaucoup

Gennosuke


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class FrameAddButton extends JFrame {

/**
* @param args
*/
public JPanel fond = new JPanel();
public JPanel gauche = new JPanel();
public JPanel droite = new JPanel();
public JButton ajouteBouton = new JButton("Ajout bouton");
public JButton nouveauBouton = new JButton("coucou");

FrameAddButton()
{

this.setContentPane(fond);
this.setSize(300, 300);

fond.setLayout(new BorderLayout());

gauche.setBackground(Color.yellow);
gauche.add(ajouteBouton);
droite.setBackground(Color.green);

ajouteBouton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
droite.add(nouveauBouton);
droite.setBackground(Color.red);
}
});

fond.add(gauche, BorderLayout.WEST);
fond.add(droite, BorderLayout.CENTER);

this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}


public static void main(String[] args) {
// TODO Auto-generated method stub
FrameAddButton fenetre = new FrameAddButton();
}

}

Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « Java ajoute JButton sur JPanel » dans :
Javascript - l'objet Array VoirLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...
Connexion à la base de données avec JDBC VoirConnexion à la base de données L'API (Application Programming Interface) JDBC, c'est-à-dire la bibliothèque de classes JDBC, se charge de trois étapes indispensables à la connexion à une base de données : la création d'une connexion à la...
Java - L'API JDBC VoirIntroduction à JDBC La technologie JDBC (Java DataBase Connectivity) est un ensemble de classes permettant de développer des applications capables de se connecter à des serveurs de bases de données (SGBD). L'accès aux bases de données avec...

1

does01, le 18 mar 2009 à 09:33:55

1er tu peux pas voir les deux buttons sans utilisé un manager dc esae d'utulise setLayou(new grideLayout(pramater1,parametre2)

pramater1 un int
parametre2 un int aussi

et pour changer couleur de la panel il faut que tu ajoute un méthode avant droite.setBackground(Color.red);
c droit.setOpaque(boolean) c la reponse je souhaite que ca va t'aide

Répondre à does01

2

Gennosuke, le 18 mar 2009 à 22:44:22

Bonjour,

Merci, j'ai bien rajouté le layout manager (ce qui va rendre les choses plus jolies), mais en fait le problème se corrige en faisant un this.setVisible(true) - avec this = ma JFrame.
Autre solution : redimensionner la fenêtre à la main et le bouton apparaît.
Est-ce que vous savez comment on peut faire quand le JPanel se trouve dans un JPanel et qu'on n'a donc pas accès à la JFrame sous-jacente (this.setVisible ne marche pas pour les JPanel).

Merci.

Gennosuke

public class FrameAddButton extends JFrame {

/**
* @param args
*/
public JPanel fond = new JPanel();
public JPanel gauche = new JPanel();
public JPanel droite = new JPanel();
public JButton ajouteBouton = new JButton("Ajout bouton");
public JButton nouveauBouton = new JButton("coucou");

FrameAddButton()
{

this.setContentPane(fond);
this.setSize(300, 300);

fond.setLayout(new BorderLayout());

gauche.setBackground(Color.yellow);
gauche.add(ajouteBouton);
droite.setBackground(Color.green);

ajouteBouton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
droite.add(nouveauBouton);
droite.setBackground(Color.red);
setVisible(true);
}
});

fond.add(gauche, BorderLayout.WEST);
fond.add(droite, BorderLayout.CENTER);

this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}


public static void main(String[] args) {
// TODO Auto-generated method stub
FrameAddButton fenetre = new FrameAddButton();
}

}

Répondre à Gennosuke

3

 Gennosuke, le 19 mar 2009 à 21:51:25

Bonjour,

Je clos ce problème, merci pour votre aide, la solution que j'ai finalement adoptée (et qui est celle qui résoud mon problème), c'est la méthode updateUI() qui fait apparaître mes boutons comme par miracle !

Gennosuke

Répondre à Gennosuke