Polygone avec jpanel

Fermé
skflers61 Messages postés 43 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 21 novembre 2014 - 19 nov. 2014 à 13:30
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 19 nov. 2014 à 20:04
Bonjour,

je fais une application qui doit m'afficher un polygone. j'ai une classe qui me créer ce polygone et elle fonctionne bien. Le problème c'est que je n'arrive pas à mettre des composants à coté de ce polygone (boutons, bordures, images,..)

voici mon code:
public class Polygon extends JPanel {
	
	// Déclarer 2 tableaux pour les coordonnées
		int x[], y[];
		public void init()
		{
			// Définir la couleur de fond 
			setBackground(Color.gray);
			// Définir les coordonnées de chaque point du polygone
			x = new int[8];
			y = new int[8];
			
			x[0] = 20;  y[0] = 100;
			x[1] = 60;  y[1] = 50;
			x[2] = 130; y[2] = 50;
			x[3] = 170; y[3] = 100;
			x[4] = 170; y[4] = 150;
			x[5] = 130; y[5] = 200;
			x[6] = 60;  y[6] = 200;
			x[7] = 20;  y[7] = 150;
			
		}

		public void paint(Graphics g)
		{
			init();
			// Tracer un polygone, basé sur les tableaux de coordonnées x[] et y[]
			g.setColor(Color.red);
			g.drawPolygon(x, y, x.length);
		}
	
		public static void main(String[] args) {
			JFrame fen = new JFrame();
			Polygon p = new Polygon();
			p.setBorder(BorderFactory.createTitledBorder("Poste[]"));
			p.add(new JButton("Difficile"));
			fen.add(p);
			fen.setSize(500,500);
			fen.setVisible(true);
		}
}


Par exemple, dans ce code j'essaie de mettre une bordure et un bouton dans mon polygone, qui est en faite un jpanel, mais sa m'affiche juste le polygone et rien d'autres.

j'ai essayé en ajoutant un deuxieme jpanel:
public static void main(String[] args) {
			JFrame fen = new JFrame();

			Polygon p = new Polygon();		
			JPanel d = new JPanel(); 
			
			d.setBorder(BorderFactory.createTitledBorder("Poste[]"));
			d.add(new JButton("Difficile"));
			fen.add(p);
			fen.add(d);
		
			fen.setSize(500,500);
			fen.setVisible(true);
}


et la sa ne m'affiche que le JPanel "d".
En faite, c'est que le dernier composant que j'ajoute à ma fenêtre (ici fen.add(d)) qui est affiché.

Comment je peux faire pour voir le polygone et mes autres composants dans ma fenêtre?

Merci pour vos réponses.

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
19 nov. 2014 à 20:04
Bonjour,

C'est un problème de Layout, par défaut une JFrame a un BorderLayout, tu dois donc préciser sur quel bord tu ajoutes ton JPanel, sinon ils vont se mettre tout les deux sur le même bord.

Voir : A Visual Guide to Layout Managers

fen.add(d, BorderLayout.NORTH);
fen.add(p, BorderLayout.CENTER);

Attention : ce n'est pas parce que ta fenêtre n'est plus visible que le programme est terminé, tu dois indiquer au programme de se fermer en même temps que la fenêtre.

fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
0