Bonjour a tous,
Je débute ma première interface SWING, j'essaye au maximum de faire un code propre et simple.
J'ai donc pas mal de questions sur des petites nuances ou alors des conseils sur les solutions les plus en adéquation avec mon besoin.
1. Structure JFrame, JPanel...
J'ai crée un JFrame qui lui contient 2 JPanels et un JMenuBar.
J'aurais ainsi un menu en haut ainsi que 2 zones que je redécouperai au besoin.
Je me suis demandé si il ne valait mieux pas passer par un autre JPanel qui lui contiendrai mes 2 JPanels et le JMenuBar et donc ma JFrame serait uniquement ma fenêtre?
2. Ma JFrame:
Voyez quelque chose d'anormale dans la façon de penser? A noter que RadarPanel et MessagePanel sont des classes qui hérite (extends) de la classe JPanel.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 public class MainWindow extends JFrame { private MenuWindow menu = new MenuWindow(this); private RadarPanel radar = new RadarPanel(); private MessagePanel message = new MessagePanel(); public MainWindow() { super(); build(); } private void build() { configWindow(); setJMenuBar(menu); add(radar); add(message); } private void configWindow() { setTitle("IHM DELOC"); setSize(1024, 800); setLocationRelativeTo(null); setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } // GETTER AND SETTER public MenuWindow getMenuWindow(){ return menu; } public RadarPanel getRadarPanel(){ return radar; } public MessagePanel getMessagePanel(){ return message; } }
3. Changer les proportions de mes 2 JPanels
Je voudrais que RadarPanel prenne plus de place que MessagePanel j'avais dans un premier temps utilisé setPreferredSize et j'avais défini des valeurs en fonction de frame.getWidth et Heigh mais lorsque je redimensionner la fenêtre cela ne changeai pas.
Quel est la meilleur solution pour définir la place d'un panel en BoxLayout?
4. Retrouver ma JFrame dans un JPanel
Ayant instancier RadarPanel dans MainWindow, lorsque à partir du Panel MessagePanel je veux utiliser une méthode de RadarPanel, je dois repasser pas MainWindow. Je n'ai rien trouver (getParent ou autre) de convenable à part passer MainWindow en paramètre...
Y a t il une solution plus propre sans rien passer en paramètre?
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
26
27
28
29
30
31
32
33 public class MenuWindow extends JMenuBar implements ActionListener { private MainWindow frame; public MenuWindow(MainWindow frame) { this.frame = frame; JMenu menu1 = new JMenu("Application"); JMenu menu2 = new JMenu("Options"); // GESTION DE MES MENUS add(menu1); add(menu2); } @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("redemarrer")) { JOptionPane.showMessageDialog(null, "Redemarrer"); } else if (e.getActionCommand().equals("couleur radar bleu")) { frame.getRadarPanel().changeColorCircle(Color.BLUE); } else if (e.getActionCommand().equals("couleur radar rouge")) { frame.getRadarPanel().changeColorCircle(Color.RED); } }
Merci beaucoup pour vos futures réponses.
Bon week end,
Partager