Polygone avec jpanel

skflers61 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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