Хорошо, я работаю над плагином Eclipse, основанным на примере JGraph. Проблема в том, что я не могу заставить метод «save» работать, вот как работает программа вкратце:
- У меня есть класс DiagramEditor с методом init (), где я создаю объект GraphEditor и вызываю метод createFrame () этого объекта.
- GraphEditor расширяет BasicGraphEditor (который расширяет JPanel), метод createFrame () возвращает JFrame и имеет строку «frame.setJMenuBar (menuBar)»
- «menuBar» - это переменная объекта, которая инициализируется в BasicGraphEditor.
До сих пор все круто, проблема в слушателе действий, который должен сохранить файл. Чтобы получить график, мне нужно получить компонент GraphEditor, поэтому я делаю компонент Component = (Component) e.getSource (), который представляет собой ActionEvent, переданный этому слушателю действия, а на этом этапе JMenuItem «сохраняет», затем я получаю родитель, который является JPopupMenu, тогда я хочу получить родителя этого JPopupMenu, который должен быть GraphEdiotor, но вместо этого я получаю ноль. Есть идеи почему?
Вот некоторый исходный код:
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);