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
 
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 mon frame principal, MainMenuBar et MainToolBar sont la barre de menu et la barre d'outils que j'ai créé.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
  }
}
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.

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