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 :
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
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; } }
Merci d'avance
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); } }
Partager