public class Editor extends JFrame {
// automatisch über Eclipse eingefügt
private static final long serialVersionUID = 3215604333266961332L;
private static final Action Action = null;
// die innere Klasse für den ActionListener
class MeinListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// welcher Eintrag ist angeklickt worden?
if (e.getActionCommand().equals("neu"))
dateiNeu();
if (e.getActionCommand().equals("beenden"))
beenden();
if (e.getActionCommand().equals("laden"))
dateiLaden();
if (e.getActionCommand().equals("schneiden"))
//dateiSchneiden();
if (e.getActionCommand().equals("info"))
dateiInfo();
}
}
// für das Textfeld
private JTextArea eingabeFeld;
public Editor(String titel) {
super(titel);
// wir nehmen ein Border-Layout
// setLayout(new BorderLayout());
// die Menüleiste erzeugen
// sie kommt automatisch nach oben
menu();
// das Eingabefeld erstellen
eingabeFeld = new JTextArea();
// gegebenfalls mit Scrollbars in der Mitte einfügen
add(new JScrollPane(eingabeFeld), BorderLayout.CENTER);
// das Fenster ist maximiert
setExtendedState(MAXIMIZED_BOTH);
// die Mindestgröße setzen
setMinimumSize(new Dimension(600, 400));
// Standard-Verhalten festlegen und anzeigen
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
add(symbolleiste(), BorderLayout.NORTH);
}
// die Methode erzeugt das Menü
private void menu() {
// für die komplette Leiste
JMenuBar menue = new JMenuBar();
// das Menü Datei
JMenu dateiMenue = new JMenu("Datei");
// für den ActionListener
MeinListener listener = new MeinListener();
// der Eintrag Neu
JMenuItem dateiNeu = new JMenuItem();
// den Text setzen
dateiNeu.setText("Neu");
// das Bild setzen
dateiNeu.setIcon(new ImageIcon("icons/new24.gif"));
// den Shortcut, hier CTRL und N
dateiNeu.setAccelerator(KeyStroke.getKeyStroke('N',
InputEvent.CTRL_DOWN_MASK));
// das ActionCommand setzen
dateiNeu.setActionCommand("neu");
// den Listener verbinden
dateiNeu.addActionListener(listener);
dateiMenue.add(dateiNeu);
// das gesamte Menü hinzufügen
// der eintrag Öffnen
JMenuItem dateiÖeffnen = new JMenuItem();
// das Menu Datei
dateiÖeffnen.setText("Oeffnen...");
// Icon angeben
// das Bild setzen
dateiÖeffnen.setIcon(new ImageIcon("icons/open24.gif"));
// shortcut einlegen
dateiÖeffnen.setAccelerator(KeyStroke.getKeyStroke('O',
InputEvent.CTRL_DOWN_MASK));
// das actioncoomand setzen
dateiÖeffnen.setActionCommand("laden");
dateiÖeffnen.addActionListener(listener);
dateiMenue.add(dateiÖeffnen);
// eine Trennlinie einfügen
dateiMenue.addSeparator();
// der eintrag Speichern
JMenuItem dateiSpeichern = new JMenuItem();
dateiSpeichern.setText("Speichern...");
// das Bild setzen
dateiSpeichern.setIcon(new ImageIcon("icons/save24.gif"));
// shortcut einlegen
dateiSpeichern.setAccelerator(KeyStroke.getKeyStroke('S',
InputEvent.CTRL_DOWN_MASK));
dateiSpeichern.setActionCommand("speichern");
dateiSpeichern.addActionListener(listener);
dateiMenue.add(dateiSpeichern);
// Eintrag beenden
JMenuItem dateiBeenden = new JMenuItem();
dateiBeenden.setText("Beenden");
dateiBeenden.setActionCommand("beenden");
dateiBeenden.addActionListener(listener);
dateiMenue.add(dateiBeenden);
menue.add(dateiMenue);
// eine Trennlinie einfügen
dateiMenue.addSeparator();
// für die komplette Leiste
// daas menu datei Bearbeiten
// Menu Item scheiden
JMenu dateiMenueBearbeiten = new JMenu("Bearbeiten");
JMenuItem dateiMenueArbeit = new JMenuItem();
/*dateiMenueArbeit.setText("Scheiden");
dateiMenueArbeit.setIcon(new ImageIcon("icons/Cut24.gif"));
dateiMenueBearbeiten.add(dateiMenueArbeit);
dateiMenueArbeit.setAccelerator(KeyStroke.getKeyStroke('C',
InputEvent.CTRL_DOWN_MASK));
dateiMenueArbeit.setActionCommand("schneiden");
dateiMenueArbeit.addActionListener(listener);
------------------------------------------------------------------------------------------------------------
Action actions[] = eingabeFeld.getActions();
Action cutAction = findAction(actions, DefaultEditorKit.cutAction);
JButton cutButton = new JButton(cutAction);
cutButton.setText("Cut");
dateiMenueArbeit.add(cutButton);
------------------------------------------------------------------------------------------------------
// Menu Item Kopieren
JMenuItem dateiMenueKopieren = new JMenuItem();
dateiMenueKopieren.setText("Kopieren");
dateiMenueKopieren.setIcon(new ImageIcon("icons/Copy24.gif"));
dateiMenueBearbeiten.add(dateiMenueKopieren);
dateiMenueKopieren.setAccelerator(KeyStroke.getKeyStroke('L',
InputEvent.CTRL_DOWN_MASK));
dateiMenueArbeit.setActionCommand("kopieren");
dateiMenueArbeit.addActionListener(listener);
// eine Trennlinie einfügen
dateiMenueBearbeiten.addSeparator();
// Menu Item Einfügen
JMenuItem dateiMenueEinfügen = new JMenuItem();
dateiMenueEinfügen.setText("Einfügen");
dateiMenueEinfügen.setIcon(new ImageIcon("c://icons/paste241.gif"));
dateiMenueBearbeiten.add(dateiMenueEinfügen);
dateiMenueEinfügen.setAccelerator(KeyStroke.getKeyStroke('U',
InputEvent.CTRL_DOWN_MASK));
dateiMenueArbeit.setActionCommand("einfügen");
dateiMenueArbeit.addActionListener(listener);
menue.add(dateiMenueBearbeiten);
// das Menü Datei
JMenu dateiMenueInfo = new JMenu("Info");
JMenuItem dateiInfo = new JMenuItem();
dateiInfo.setText("Info");
dateiInfo.setIcon(new ImageIcon("icons/Information24.gif"));
// shortcut einlegen
dateiInfo.setAccelerator(KeyStroke.getKeyStroke('I',
InputEvent.CTRL_DOWN_MASK));
dateiInfo.setActionCommand("info");
dateiInfo.addActionListener(listener);
dateiMenueInfo.add(dateiInfo);
menue.add(dateiMenueInfo);
this.setJMenuBar(menue);
}
// die Methode erstellt die Symbolleiste und liefert sie zurück
private JToolBar symbolleiste() {
JToolBar leiste = new JToolBar();
// für den ActionListener
MeinListener listener = new MeinListener();
// das Symbol Neu
JButton dateiNeuButton = new JButton();
// das ActionCommand setzen
dateiNeuButton.setActionCommand("neu");
// das Bild setzen
dateiNeuButton.setIcon(new ImageIcon("icons/new24.gif"));
// den Text setzen
dateiNeuButton.setToolTipText("Erstellt ein neues Dokument");
// den Listener verbinden
dateiNeuButton.addActionListener(listener);
// das Symbol hinzufügen
leiste.add(dateiNeuButton);
// das Symbol Öffnen
JButton dateiOeffnenButton = new JButton();
// das ActionCommand setzen
dateiOeffnenButton.setActionCommand("laden");
// das Bild setzen
dateiOeffnenButton.setIcon(new ImageIcon("icons/open24.gif"));
// den Text setzen
dateiOeffnenButton.setToolTipText("Öffnet ein vorhandenes Dokument");
// den Listener verbinden
dateiOeffnenButton.addActionListener(listener);
// das Symbol hinzufügen
leiste.add(dateiOeffnenButton);
// das symbol speichern
JButton dateiSpeichernButton = new JButton();
// dss Actioncomman setzen
dateiSpeichernButton.setActionCommand("speichern");
// das Bild setzen
dateiSpeichernButton.setIcon(new ImageIcon("icons/save24.gif"));
// den Text setzen
dateiSpeichernButton
.setToolTipText("Speichert ein vorhandenes Dokument");
// dem listener verbinden
dateiSpeichernButton.addActionListener(listener);
// das Symbol hinzufügen
leiste.add(dateiSpeichernButton);
// eine Trennlinie einfügen
leiste.addSeparator();
// das Symbol Scheiden
JButton dateiScheideButton = new JButton();
// das ActionCommand setzen
dateiScheideButton.setActionCommand("schneiden");
// den Listener verbinden
dateiScheideButton.addActionListener(listener);
// das Symbol hinzufügen
// das Bild setzen
dateiScheideButton.setIcon(new ImageIcon("icons/Cut24.gif"));
// den Text setzen
dateiScheideButton.setToolTipText("Scheiden");
leiste.add(dateiScheideButton);
// das Symbol Kopierenvc
JButton dateiKopieButton = new JButton();
// das ActionCommand setzen
dateiKopieButton.setActionCommand("kopieren");
// das Bild setzen
dateiKopieButton.setIcon(new ImageIcon("icons/copy24.gif"));
// den Text setzen
dateiKopieButton.setToolTipText("Kopieren");
// den Listener verbinden
dateiKopieButton.addActionListener(listener);
// das Symbol hinzufügen
leiste.add(dateiKopieButton);
// das Symbol Einfügen
JButton dateiEinfügenButton = new JButton();
// das ActionCommand setzen
dateiEinfügenButton.setActionCommand("einfügen");
// das Bild setzen
dateiEinfügenButton.setIcon(new ImageIcon("c://icons/paste241.gif"));
// den Text setzen
dateiEinfügenButton.setToolTipText("Einfügen");
// den Listener verbinden
dateiEinfügenButton.addActionListener(listener);
// das Symbol hinzufügen
leiste.add(dateiEinfügenButton);
// eine Trennlinie einfügen
leiste.addSeparator();
// das symbol info
JButton dateiInfoButton = new JButton();
// das Action command setzen
dateiInfoButton.setActionCommand("info");
// das Bild setzen
dateiInfoButton.setIcon(new ImageIcon("icons/Information24.gif"));
// den text speichern
dateiInfoButton.setToolTipText("Programm Info");
// dem listener verbinden
dateiInfoButton.addActionListener(listener);
// das Symbol hinzufügen
leiste.add(dateiInfoButton);
// die komplette Leiste zurückgeben
return (leiste);
}
private static Action findAction(Action actions[], String key) {
Hashtable<Object, Action> commands = new Hashtable<Object, Action>();
for (int i = 0; i < actions.length; i++) {
Action action = actions[i];
commands.put(action.getValue(Action.NAME), action);
}
return commands.get(key);
}
// die Methode für die Funktion Neu
// hier wird einfach nur nach einer Abfrage der Text im Feld gelöscht
private void dateiNeu() {
if (JOptionPane.showConfirmDialog(this,
"Wollen Sie wirklich ein neues Dokument anlegen?",
"Neues Dokument", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
eingabeFeld.setText("");
}
// die Methode zum Laden einer Datei
private void dateiLaden() {
// für den Dialog
EditorDialoge dialog = new EditorDialoge();
// die Datei über den Dialog Öffnen beschaffen
File datei = dialog.oeffnenDialogZeigen();
// wenn eine Datei ausgewählt wurde, einlesen
// die Methode read() erzwingt eine Ausnahmebehandlung
if (datei != null) {
try {
eingabeFeld.read(new FileReader(datei), null);
} catch (IOException e) {
JOptionPane.showMessageDialog(this,
"Beim Laden hat es ein Problem gegeben.", "Fehler",
JOptionPane.ERROR_MESSAGE);
}
}
}
private void dateiSpeichern() {
// für den Dialog
EditorDialoge dialog = new EditorDialoge();
// die Datei über den Dialog Speichern beschaffen
File datei = dialog.speichernDialogZeigen();
// wenn etwas ausgewählt wurde, speichern
// die Methode write() erzwingt eine Ausnahmebehandlung
if (datei != null) {
try {
eingabeFeld.write(new FileWriter(datei));
} catch (IOException e) {
JOptionPane.showMessageDialog(this,
"Beim Speichern hat es ein Problem gegeben.", "Fehler",
JOptionPane.ERROR_MESSAGE);
}
}
}
private void dateiInfo() {
JOptionPane.showMessageDialog(this, "MiniTextVersion 1.0."
+ "Programmiert von :Peter Programmer 2008.", "Info",
JOptionPane.INFORMATION_MESSAGE);
}
private void beenden() {
if (JOptionPane.showConfirmDialog(this, "Sind Sie sicher?",
"Anwendung schließen", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
System.exit(0);
}
}