Ich habe versucht eine GUI zu schreiben. Funktioniert auch alles so weit. Nur Kann ich die Applikation nicht durch schließen des Fensters beenden. Wie bekomme ich das hin?
Code:
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JToolBar;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.KeyStroke;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Event;
import java.awt.Toolkit;
import java.awt.BorderLayout;
public class MainFrame extends JFrame implements ActionListener {
private MenuBar menuBar;
private ToolBar toolBar;
public static void main(String[] args) {
MainFrame frame = new MainFrame();
}
public MainFrame() {
/* add menu */
menuBar = new MenuBar(this);
setJMenuBar(menuBar);
/* add toolbar */
toolBar = new ToolBar(this);
toolBar.setFloatable(true);
getContentPane().add(toolBar, BorderLayout.NORTH);
addWindowListener(new WindowAdapter() {
public void WindowClosing(WindowEvent e) {
System.exit(0);
}
});
setLocation(
(Toolkit.getDefaultToolkit().getScreenSize().width - 800)/2,
(Toolkit.getDefaultToolkit().getScreenSize().height - 600)/2
);
setSize(800, 600);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
String cmd = e.getActionCommand();
if (obj instanceof JMenuItem) {
System.out.println("Menu: " + cmd);
if (cmd.equals("new")) {
/* create file */
}
if (cmd.equals("open")) {
/* open file */
}
if (cmd.equals("save")) {
/* save file */
}
if (cmd.equals("saveAs")) {
/* save file as */
}
if (cmd.equals("exit")) {
System.exit(0);
}
}
else if (obj instanceof JToolBar) {
System.out.println("Toolbar: " + cmd);
}
}
}
class MenuBar extends JMenuBar {
ActionListener listener;
public MenuBar(ActionListener listener) {
this.listener = listener;
JMenu m;
JMenuItem mi;
/* menu file */
m = new JMenu("Datei");
addItem(m, "Neu", "new", KeyEvent.VK_N);
addItem(m, "Öffnen...", "open", KeyEvent.VK_O);
addItem(m, "Save", "save", KeyEvent.VK_S);
addItem(m, "Save as...", "saveAs", KeyEvent.VK_U);
m.addSeparator();
addItem(m, "Exit", "exit", KeyEvent.VK_Q);
add(m);
/* menu edit */
m = new JMenu("Bearbeiten");
addItem(m, "Ausschneiden", "cut", KeyEvent.VK_X);
addItem(m, "Kopieren", "copy", KeyEvent.VK_C);
addItem(m, "Einfügen", "paste", KeyEvent.VK_P);
m.addSeparator();
addItem(m, "Löschen", "del", KeyEvent.VK_DELETE);
add(m);
}
/* adds items */
private void addItem(JMenu m, String name, String cmd, int code) {
JMenuItem mi = new JMenuItem(name);
mi.setActionCommand(cmd);
if (code != -1) { /* code for no code is -1 */
mi.setAccelerator(KeyStroke.getKeyStroke(code, Event.CTRL_MASK));
}
mi.addActionListener(listener);
m.add(mi);
}
}
class ToolBar extends JToolBar {
public ToolBar(ActionListener listener) {
JButton b;
b = new JButton(new ImageIcon("cut.gif"));
b.setToolTipText("Ausschneiden");
b.setActionCommand("cut");
b.addActionListener(listener);
add(b);
b = new JButton(new ImageIcon("copy.gif"));
b.setToolTipText("Kopieren");
b.setActionCommand("copy");
b.addActionListener(listener);
add(b);
b = new JButton(new ImageIcon("paste.gif"));
b.setToolTipText("Einfügen");
b.setActionCommand("paste");
b.addActionListener(listener);
add(b);
b = new JButton(new ImageIcon("del.gif"));
b.setToolTipText("Löschen");
b.setActionCommand("del");
b.addActionListener(listener);
add(b);
}
}