Hello,

J'ai une classe "UI" qui dérive de JPanel. Je souhaite que toutes mes classes filles possèdent un JCheckBox qui permet d'activer ou désactiver tous les composants qui seront insérés par les constructeurs respectifs.

Pour se faire j'ai eu l'idée de redéfinir les méthodes "add" et "setLayout" entre autre afin de pouvoir continuer à utiliser ces méthodes directement (this) sans passer par un getter qui me permettrait de reccupérer le JPanel à modifier. (configPanel ici en l'occurence).

Le problème est dans la gestion des layouts, j'ai un nullpointer exception...

Voici le code :

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
public class UI extends JPanel implements Constants{
	private JPanel configPanel;
	
	public UI(String  panelName) {
		this.setBorder(BorderFactory.createTitledBorder(Interface.blackline, ""));
		JCheckBox enableConfigPanel = new JCheckBox("Configure "+panelName);
		configPanel = new JPanel();
		super.setLayout(new BorderLayout());		
super.add(enableConfigPanel, BorderLayout.NORTH);
		super.add(configPanel, BorderLayout.SOUTH);
		
	
		
	}
	public void enableAllComponents() {
		Component[] components = configPanel.getComponents();
		for (int i = 0; i < components.length; i++)
			components[i].setEnabled(true);
	}
	public void disableAllComponents() {
		Component[] components = configPanel.getComponents();
		for (int i = 0; i < components.length ; i++)
			components[i].setEnabled(false);
	}
	public void setTitleBorder (JPanel panel, String title) {
		panel.setBorder(BorderFactory.createTitledBorder(
				Interface.blackline, title));
	}
	public JPanel getPanel() {
		return configPanel;
	}
	public Component add(Component comp) {
		return configPanel.add(comp);
		
		
	}
	public void setLayout(LayoutManager layout){
		configPanel.setLayout(layout);
	}	
}
Une classe fille :

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
public class Settings extends UI{
	private String family;
	
	private HashMapSettings hashMap;
	
	private JTextField sourceNameField;
	private JComboBox familyBox;
	private JLabel familyLabel ,sourceNameLabel, pathLabel, pathBrowseLabel ;
	private JPanel showPanel;
	public Settings() {
		//panel:
		super("Settings");
		this.setLayout(new BoxLayout(this.getPanel(),BoxLayout.Y_AXIS));
		this.setVisible(false);
		hashMap = new HashMapSettings();
		showPanel();
		configPanel();
		hashMap.read();
		
	
	}

en rouge les lignes qui posent problème...
SI qqn voit plus simple je suis également preneur