Bonjour,
je suis plutôt novice en Java, et je souhaite afficher plusieurs éléments (des petites croix rouges) dans une fenêtre. Malheureusement, seul le dernier de mes appels de frame.add() semble être pris en compte puisque seule la dernière croix s'affiche. Or, le code suivant affiche bien deux boutons, mais une seule des deux croix s'affiche.
Ma question est donc : pourquoi les deux boutons s'affichent-ils, alors qu'une seule des deux croix ne s'affiche? Et comment faire pour que les deux croix s'affichent? Je suppose que le problème vient de ma méconnaissance du fonctionnement de JFrame, et j'aimerais mieux le comprendre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 frame.add(new JButton("OK"),BorderLayout.NORTH); frame.add(new JButton("OK"),BorderLayout.SOUTH); frame.add(new JPoints(5,5)) frame.add(new JPoints(10,5))
Voici le code des trois classes principalement utilisées. Merci d'avance pour vos réponses !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Afficheur { public static void main(String[] args) { Carte excarte = new Carte(); excarte.noeuds.put("2", new Caracteristiques(20,30)); excarte.noeuds.put("1", new Caracteristiques(4,5)); int largeur = 300; int hauteur = 300; JFrame frame = new JFrame("Ma Carte"); frame.setSize(largeur,hauteur); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); for (int i = 1; i<=excarte.noeuds.size(); i++) { frame.add(new JPoints(excarte.noeuds.get(String.valueOf(i)).lat,excarte.noeuds.get(String.valueOf(i)).lon)); } frame.setVisible(true); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 import javax.swing.JComponent; import javax.swing.JFrame; public class JPoints extends JComponent { private static final PointsUI UI = new PointsUI(); public JPoints(double x, double y) { UI.x = (int)x; UI.y = (int)y; setUI(UI); } public static void display(JFrame frame, double x, double y) { frame.add(new JPoints(x,y)); frame.setVisible(true); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import java.awt.Color; import java.awt.Graphics; import javax.swing.JComponent; import javax.swing.plaf.ComponentUI; public class PointsUI extends ComponentUI { int x,y; @Override public void paint(Graphics g, JComponent compo) { JPoints c = (JPoints)compo; Color oldColor=g.getColor(); g.setColor(Color.RED); g.drawLine(x-2,y-2,x+2, y+2); g.drawLine(x-2,y+2,x+2,y-2); g.setColor(oldColor); } }
Partager