C'est mon frame principal, MainMenuBar et MainToolBar sont la barre de menu et la barre d'outils que j'ai créé.Code:
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 public class FrameMain extends JFrame{ private static final long serialVersionUID = 1; private MainToolBar toolBar; private MainMenuBar menuBar; public FrameMain(){ toolBar = new MainToolBar(); menuBar = new MainMenuBar(); setJMenuBar(menuBar); PanelDBExplorer explorer = new PanelDBExplorer(); JScrollPane scrollPane = new JScrollPane(explorer); JPanel contentPane = new JPanel(new BorderLayout()); contentPane.add(toolBar, BorderLayout.NORTH); contentPane.add(scrollPane, BorderLayout.CENTER); setContentPane(contentPane); setTitle("xxxxxx"); pack(); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
C'est la classe Main du projet. J'ai stocké le référence du frame dans un attribut public et static. C'est pour faciliter l'accès au frame principal de l'application.Code:
1
2
3
4
5
6
7
8
9 public class Main { public static final FrameMain appFrame = new FrameMain(); public static void main(String[] args){ Main.appFrame.setVisible(true); } }
Voilà le problème: Quand je clique un bouton sur la barre d'outils ou le menu pour changer le ContentPane du frame. le programme plante.
Je ne vois vraiment pas où est le problème. Si vous connaissez ou vous avez trouvé le bug, veuillez me l'indiquer, merci d'avance. :DCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public class ActionStatistic extends AbstractAction{ private static final long serialVersionUID = 1; public ActionStatistic(String text, Icon icon, KeyStroke accelerator, String desc){ super(); putValue(Action.SMALL_ICON, icon); putValue(Action.LARGE_ICON_KEY, icon); putValue(Action.NAME, text); putValue(Action.ACCELERATOR_KEY, accelerator); putValue(Action.SHORT_DESCRIPTION, desc); } public void actionPerformed(ActionEvent e){ PanelStatistic panelStat = new PanelStatistic(); // C'est cette ligne là qui me pose le problème. Main.appFrame.setContentPane(panelStat); } }

