Bonjour, je voudrais adapter la taille de deux sous panels à celui d'un panel principal.
Le panel principal s'appel panTabs et les sous panels HDMT et NEMO (sont de même structure).
Cependant quand je set la taille du panel principale puis crée une méthodes getTabsSize() pour récupérer le get il me met un nullpointer.
Classe qui créer le panel principale auquel on ajoute les sous panel :
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package IHM;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import EVENT.ActionWindow;
import TABBED.TabHDMT;
import TABBED.TabNEMO;

/**
 * IHM of Converter application
 * 
 * @author t0163126
 */
public class IhmConverter extends JFrame {
	private static final long serialVersionUID = 1L;
	
	private JPanel panCustomer;
	private JPanel panTab;
	private static ToolBar toolBar;

	private static JTabbedPane tabs;
	private static TabHDMT HDMT;
	private static TabNEMO NEMO;
	
	private int maxW = 0;
	private int maxH = 0;
	private static Dimension panelDim;
	private Dimension newDim;

	// ============================================================
	/**
	 *  Ihm constructorr
	 */
	private IhmConverter() {
		initIhmConverter();
	}

	/**
	 *  Method initialization
	 */
	private void initIhmConverter() {
		// window event
		this.addWindowListener(new ActionWindow());
		
		HDMT = new TabHDMT();
		NEMO = new TabNEMO();
		tabs = new JTabbedPane(SwingConstants.NORTH);
		// Add tabs
		tabs.add("HDMT", HDMT);
		tabs.add("NEMO", NEMO);
		tabs.setOpaque(true);
		tabs.setMnemonicAt(0, KeyEvent.VK_H); //ALT+H
		tabs.setMnemonicAt(1, KeyEvent.VK_N); //ALT+N
		// Dimension
		final Dimension originalTabsDim = tabs.getPreferredSize();
		panelDim = new Dimension();

		tabs.addChangeListener(new ChangeListener() {
			@Override
			public void stateChanged(ChangeEvent e) {
				Component p = ((JTabbedPane) e.getSource()).getSelectedComponent();

				panelDim = p.getPreferredSize();
				newDim = new Dimension(originalTabsDim.width
						- (maxW - panelDim.width), originalTabsDim.height
						- (maxH - panelDim.height));

				tabs.setPreferredSize(newDim);
				tabs.setSelectedComponent(p);
				tabs.getSelectedComponent().setPreferredSize(newDim);
				pack();
			}

		});
		panTab = new JPanel();
		panTab.setLayout(new FlowLayout());
		panTab.add(tabs);
		
		// Customer area
		panCustomer = (JPanel) this.getContentPane();
		panCustomer.setLayout(new BorderLayout());

		panCustomer.add(panTab, BorderLayout.BEFORE_LINE_BEGINS);

		// Add toolBar
		toolBar = new ToolBar();
		this.add(toolBar, BorderLayout.NORTH);
	}

	// ============================================================
	// instenciation
	private static IhmConverter hdmt;
	public static IhmConverter getInstance() {
		if (hdmt == null) {
			hdmt = new IhmConverter();
		}
		return hdmt;
	}

	// ============================================================
	// Getter and setter
	public static Dimension getTabsSize() {
		Dimension taille = IhmConverter.tabs.getSelectedComponent().getPreferredSize();
		
		return taille;
	}
	public static TabHDMT getHDMT() {
		return IhmConverter.HDMT;
	}
	public static TabNEMO getNEMO() {
		return IhmConverter.NEMO;
	}
	public static ToolBar getToolBar() {
		return IhmConverter.toolBar;
	}
}
Puis le sous panel :
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
 
package TABBED;
 
import java.awt.Color;
import java.awt.Dimension;
 
import javax.swing.BorderFactory;
import javax.swing.JPanel;
 
import IHM.IhmConverter;
 
/**
 * HDMT tab that recover all sub tabHDMT that suits him
 * @author t0163126
 */
public class TabHDMT extends JPanel 
{
	private static final long serialVersionUID = 1L;
 
	/**
         * HDMT constructor
         */
	public TabHDMT() 
	{
		//Title of tab
		this.setBorder(BorderFactory.createTitledBorder("HDMT"));
		this.setBackground(Color.LIGHT_GRAY);
		this.setOpaque(true);
 
		JPanel panel = new JPanel();
 
		System.out.println(IhmConverter.getTabsSize());
		panel.setPreferredSize(IhmConverter.getTabsSize());
		this.add(panel);
	}
}
Merci d'avance