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:

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;
	}
 
}
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.



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...

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);


	}

}
Y a t il une solution plus propre sans rien passer en paramètre?

Merci beaucoup pour vos futures réponses.

Bon week end,