Hallo!
Also habe nun schon vermehrt gesucht und bin zum Punkt gekommen das es ein gutes Argument ist, einen ActionListener da zu Implementieren wo er auch gebraucht wird. Wie dem auch sei ... ich komm nicht weiter.
Problem:
Dies ist eine Klasse von meinem Package was ich aufbauen will. Diese liest eine XML-Datei aus und baut dementsprechend eine JMenuBar auf. Das funktioniert ja an und für sich.
Mein Gedanke ist nun samt anderen Klassen das ganze in ein Package zu packen und für meine Projekte zu verwenden. Einzigstens Makel ist der ActionListener. Wie schaffe ich es DIESEN in eine andere Klasse zu Implementieren?
Habe bereits versucht diese Klasse 'JMenubar' mit einem Interface zu koppel "IJMenuBar" worin sich die Methode "actionPerformed" befindet. Implementiere ich allerdings dieses Interface in eine andere Klasse inc. der Methode zeigt beispielsweise "e.getActionCommand()" keine reaktion.
Zur Verdeutlichung: Ich komme ja an diese Methide actionPerformed in einem Package nicht mehr ran.
Danke schon mal im Voraus!
Also habe nun schon vermehrt gesucht und bin zum Punkt gekommen das es ein gutes Argument ist, einen ActionListener da zu Implementieren wo er auch gebraucht wird. Wie dem auch sei ... ich komm nicht weiter.
Problem:
Code:
public class JMenuBar extends javax.swing.JMenuBar implements ActionListener {
private JMenu menu;
public JMenuBar(String xmlFile) {
try {
Document doc = new SAXBuilder().build(new File(xmlFile));
Element root = doc.getRootElement();
Iterator jmenu = root.getChildren("JMenu").iterator();
while (jmenu.hasNext()) {
Element m_item = (Element) jmenu.next();
menu = new JMenu(m_item.getAttributeValue("name"));
Iterator jmenuitem = m_item.getChildren().iterator();
while (jmenuitem.hasNext()) {
Element item = (Element) jmenuitem.next();
menu.add(createItem(item.getName(), item
.getAttributeValue("name")));
}
this.add(menu);
}
} catch (JDOMParseException e) {
System.out.println(e);
System.exit(1);
} catch (IOException e) {
System.out.println(e);
System.exit(1);
} catch (JDOMException e) {
System.out.println(e);
System.exit(1);
} catch (NullPointerException e) {
System.out.println(e);
System.exit(1);
}
}
private JComponent createItem(String item, String itemName) {
JMenuItem jMenuItem;
JSeparator jSeparator;
if (item.equals("JMenuItem")) {
jMenuItem = new JMenuItem(itemName);
jMenuItem.addActionListener(this);
return jMenuItem;
} else if (item.equals("JSeparator")) {
jSeparator = new JSeparator();
return jSeparator;
}
return null;
}
public void actionPerformed(ActionEvent e) {
}
}
Dies ist eine Klasse von meinem Package was ich aufbauen will. Diese liest eine XML-Datei aus und baut dementsprechend eine JMenuBar auf. Das funktioniert ja an und für sich.
Mein Gedanke ist nun samt anderen Klassen das ganze in ein Package zu packen und für meine Projekte zu verwenden. Einzigstens Makel ist der ActionListener. Wie schaffe ich es DIESEN in eine andere Klasse zu Implementieren?
Habe bereits versucht diese Klasse 'JMenubar' mit einem Interface zu koppel "IJMenuBar" worin sich die Methode "actionPerformed" befindet. Implementiere ich allerdings dieses Interface in eine andere Klasse inc. der Methode zeigt beispielsweise "e.getActionCommand()" keine reaktion.
Zur Verdeutlichung: Ich komme ja an diese Methide actionPerformed in einem Package nicht mehr ran.
Code:
Pseudocode:
class TestRunner implements IJMenuBar {
...
public TestRunner() {
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
}
...
}
Danke schon mal im Voraus!