Ok, donc je travaille sur un plugin Eclipse basé sur l'exemple JGraph. Le problème est que je ne peux pas vraiment faire fonctionner la méthode "save", voici comment le programme fonctionne: - J'ai une classe DiagramEditor avec une méthode init(), où je crée un objet GraphEditor et appelle le createFrame () methord de cet objet. - GraphEditor étend le BasicGraphEditor (qui étend JPanel), la méthode createFrame() renvoie un JFrame et a une ligne "frame.setJMenuBar (menuBar)" - le "menuBar" est une variable d'objet qui est initialisée dans BasicGraphEditor. Jusqu'à ce que tout soit cool, le problème est avec l'écouteur d'action qui est censé enregistrer un fichier. Pour obtenir le graphique, j'ai besoin du composant GraphEditor, donc je fais un composant Component = (Component) e.getSource() qui est l'ActionEvent passé à ce listener d'action et à ce stade est le JMenuItem "save", alors je reçois le parent qui est le JPopupMenu, alors je veux obtenir le parent de ce JPopupMenu qui devrait être le GraphEdiotor, mais à la place je reçois un null. Une idée pourquoi?JPopupMenu getParent() retourne une valeur nulle?
Voici quelques code source:
DiagramEditor.java:
@Override
public void init(IEditorSite site, IEditorInput input)
throws PartInitException {
setSite(site);
setInput(input);
this.diagram = ((DiagramEditorInput)input).getDiagram();
setPartName(this.diagram.getName());
gEditor = new GraphEditor();
gEditor.createFrame().setVisible(true);
}
BasicGraphEditor.java:
public JFrame createFrame()
{
JFrame frame = new JFrame();
frame.getContentPane().add(this);
frame.setJMenuBar(menuBar);
//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(870, 640);
return frame;
}
In the constructor:
menuBar = new JMenuBar();
menu = new JMenu("File");
menu.setMnemonic(KeyEvent.VK_F);
menuBar.add(menu);
JMenuItem openMenuItem = new JMenuItem("Open", KeyEvent.VK_O);
// ADD FILE OPENING
//openMenuItem.addActionListener(menuListener);
menu.add(openMenuItem);
JMenuItem saveMenuItem = new JMenuItem("Save", new ImageIcon("/images/save.gif"));
saveMenuItem.setMnemonic(KeyEvent.VK_S);
saveMenuItem.addActionListener(new SaveAction(false));
menu.add(saveMenuItem);
// menu.add(new SaveAction(false));
JMenuItem saveMenuItemAs = new JMenuItem("SaveAs", new ImageIcon("/images/saveas.gif"));
//saveMenuItemAs.setMnemonic(KeyEvent.VK_S);
saveMenuItemAs.addActionListener(new SaveAction(true));
menu.add(saveMenuItemAs);
//menu.add(new SaveAction(true));
JMenuItem closeMenuItem = new JMenuItem("Close", KeyEvent.VK_C);
closeMenuItem.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
);
menu.add(closeMenuItem);