Swing Aufruf der Funktion (die ein Dialog anzeigt) über Symbol anzeigen lassen

C

Codix

Bekanntes Mitglied
Bei dieser Aufgabe muss man dafür sorgen, dass der Aufruf der Funktion "Info" auch noch über das Symbol "Info" aufgerufen werden kann. (nicht nur über ein Menü Hilfe) wie bereits möglich.
Wie kriege ich das hin? Ich nehme an, dass das Symbol mit dem Dialog verbunden werden muss, aber wie?

Bitte um Antworten.
Java:
import java.awt.BorderLayout;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;

public class Editor extends JFrame{
    private static final long serialVersionUID = 3215604333266961332L;
  
    class MeinListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (e.getActionCommand().equals("new"))
                fileNew();
            if (e.getActionCommand().equals("load"))
                fileLoad();
            if (e.getActionCommand().equals("save"))
                fileSave();
            if (e.getActionCommand().equals("end"))
                end();
            //
            if (e.getActionCommand().equals("info"))
                hilfeInfo();

        }
    }


    private JTextArea inputField;
  
    public Editor(String text) {
        super(text);
      
        setLayout(new BorderLayout());
      
  
        inputField = new JTextArea();
        add(new JScrollPane(inputField), BorderLayout.CENTER);
      
      
        menu();

        add(symbolleiste(), BorderLayout.NORTH);

        setExtendedState(MAXIMIZED_BOTH);
        setMinimumSize(new Dimension(600, 200));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
  
    private void menu() {
        JMenuBar menue = new JMenuBar();
        JMenu fileMenue = new JMenu("File");
  
        //
        JMenu hilfeMenue = new JMenu("Hilfe");
      
        MeinListener listener = new MeinListener();

        JMenuItem fileNew = new JMenuItem();
        fileNew.setText("Neu");
        fileNew.setIcon(new ImageIcon("icons/new24.gif"));
        fileNew.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_DOWN_MASK));
        fileNew.setActionCommand("neu");
        fileNew.addActionListener(listener);
        fileMenue.add(fileNew);
      
        JMenuItem fileOpen = new JMenuItem();
        fileOpen.setText("Open...");
        fileOpen.setIcon(new ImageIcon("icons/open24.gif"));
        fileOpen.setAccelerator(KeyStroke.getKeyStroke('O', InputEvent.CTRL_DOWN_MASK));
        fileOpen.setActionCommand("load");
        fileOpen.addActionListener(listener);
        fileMenue.add(fileOpen);

        fileMenue.addSeparator();
      
        JMenuItem fileSave = new JMenuItem();
        fileSave.setText("Save...");
        fileSave.setIcon(new ImageIcon("icons/save24.gif"));
        fileSave.setAccelerator(KeyStroke.getKeyStroke('S', InputEvent.CTRL_DOWN_MASK));
        fileSave.setActionCommand("save");
        fileSave.addActionListener(listener);
        fileMenue.add(fileSave);

        fileMenue.addSeparator();
      
        JMenuItem fileEnd = new JMenuItem();
        fileEnd.setText("End");
        fileEnd.setActionCommand("end");
        fileEnd.addActionListener(listener);
        fileMenue.add(fileEnd);
      
        //
        JMenuItem hilfeInfo = new JMenuItem();
        hilfeInfo.setText("Info");
        fileSave.setIcon(new ImageIcon("icons/information24.gif"));
        fileSave.setAccelerator(KeyStroke.getKeyStroke('I', InputEvent.CTRL_DOWN_MASK));
        hilfeInfo.setActionCommand("info");
        hilfeInfo.addActionListener(listener);
        hilfeMenue.add(hilfeInfo);

      
        menue.add(fileMenue);
        //
        menue.add(hilfeMenue);
        this.setJMenuBar(menue);
    }
  
    private JToolBar symbolleiste() {
        JToolBar leiste = new JToolBar();
        MeinListener listener = new MeinListener();

        JButton fileNewButton = new JButton();
        fileNewButton.setActionCommand("new");
        fileNewButton.setIcon(new ImageIcon("icons/new24.gif"));
        fileNewButton.setToolTipText("creates a new document");
        fileNewButton.addActionListener(listener);
        leiste.add(fileNewButton);
      
        JButton fileOpenButton = new JButton();
        fileOpenButton.setActionCommand("load");
        fileOpenButton.setIcon(new ImageIcon("icons/open24.gif"));
        fileOpenButton.setToolTipText("Opens an existing document");
        fileOpenButton.addActionListener(listener);
        leiste.add(fileOpenButton);
      
        JButton fileSaveButton = new JButton();
        fileSaveButton.setActionCommand("save");
        fileSaveButton.setIcon(new ImageIcon("icons/save24.gif"));
        fileSaveButton.setToolTipText("Saves the current document");
        fileSaveButton.addActionListener(listener);
        leiste.add(fileSaveButton);
      
        //
        JButton hilfeInfoButton = new JButton();
        hilfeInfoButton.setActionCommand("Info");
        hilfeInfoButton.setIcon(new ImageIcon("icons/information24.gif"));
        hilfeInfoButton.setToolTipText("Information about the current document");
        hilfeInfoButton.addActionListener(listener);
        leiste.add(hilfeInfoButton);

        return (leiste);
    }

    //sollte es eigentlich beim Anklicken des Symbols anzeigen, zeigt es aber wenn es im Menü ausgewählt wird
    //wie kann ich das gleiche bei mAnklicken des Symbols anzeigen lassen?
    private void hilfeInfo() {
        if(JOptionPane.showConfirmDialog(this, "MiniText Version 5.0. \nProgrammiert von: E.Gudz 2020", "Info", JOptionPane.DEFAULT_OPTION) == JOptionPane.DEFAULT_OPTION)
            inputField.setText("");
    }

    private void fileNew() {
        if(JOptionPane.showConfirmDialog(this, "do you really want to create a new document?", "New document", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
            inputField.setText("");
    }


    private void fileLoad() {

        EditorDialoge dialog = new EditorDialoge();
      

        File file = dialog.oeffnenDialogZeigen();
      
      
        if (file != null) {
            try {
                inputField.read(new FileReader(file), null);
            }
            catch (IOException e) {
                JOptionPane.showMessageDialog(this, "There was a problem while loading.", "Error", JOptionPane.ERROR_MESSAGE);
            }
        }
    }


    private void fileSave() {

        EditorDialoge dialog = new EditorDialoge();
      
  
        File file = dialog.speichernDialogZeigen();
      

        if (file != null) {
            try {
                inputField.write(new FileWriter(file));
            }
            catch (IOException e) {
                JOptionPane.showMessageDialog(this, "Problem occured while saving.", "Error", JOptionPane.ERROR_MESSAGE);
            }
        }
    }
  
  
    private void end() {
        if(JOptionPane.showConfirmDialog(this, "Are you sure?", "Close the application", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
            System.exit(0);
    }
}

Java:
import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

public class EditorDialoge {
    //eine innere Klasse für den Filter
    //sie erbt von der Klasse FileFilter
    class MeinFilter extends FileFilter {

        //die Methode accept() definiert den Filter
        //hier für Dateien mit der Erweiterung .txt
        //und für Ordner
        @Override
        public boolean accept(File f) {
            //für den kompakteren Zugriff
            String name = f.getName().toLowerCase();
            if (f.isDirectory())
                return true;
            if (name.endsWith(".txt"))
                return true;
            return false;
        }

        //die Methode legt den Namen für den Filter fest
        @Override
        public String getDescription() {
            return "Textdateien";
        }
    }

    //die Methode zeigt den Öffnen-Dialog für eine Datei
    public File oeffnenDialogZeigen() {
        //einen neuen Dialog erzeugen
        JFileChooser oeffnenDialog = new JFileChooser();
        //den Filter setzen
        oeffnenDialog.setFileFilter(new MeinFilter());
        //den Filter für Alle Dateien deaktivieren
        oeffnenDialog.setAcceptAllFileFilterUsed(false);
               
        //den Dialog anzeigen und den Status holen
        int status = oeffnenDialog.showOpenDialog(null);
               
        //wurde auf Open geklickt, dann die ausgewählte Datei als Typ File zurückliefern
        if (status == JFileChooser.APPROVE_OPTION)
            return (oeffnenDialog.getSelectedFile());
        else
            return null;
    }
       
    //die Methode zeigt den Speichern-Dialog für eine Datei
    //Sie arbeitet im Wesentlichen so wie die Methode für den Öffnen-Dialog
    public File speichernDialogZeigen() {
        //einen neuen Dialog erzeugen
        JFileChooser speichernDialog = new JFileChooser();
        //den Filter setzen
        speichernDialog.setFileFilter(new MeinFilter());
        //den Filter für Alle Dateien deaktivieren
        speichernDialog.setAcceptAllFileFilterUsed(false);
               
        //den Dialog anzeigen und den Status holen
        int status = speichernDialog.showSaveDialog(null);
           
        //wurde auf Save geklickt, dann die ausgewählte Datei als Typ File zurückliefern
        if (status == JFileChooser.APPROVE_OPTION)
            return (speichernDialog.getSelectedFile());
        else
            return null;
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
P GUI Aufruf AWT, Swing, JavaFX & SWT 2
M Übergeben von Paramter bei FXML Aufruf? AWT, Swing, JavaFX & SWT 8
C Nach Aufruf von anderer Klasse streikt Grafik AWT, Swing, JavaFX & SWT 1
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
D JLabel bei Aufruf neue Zeile AWT, Swing, JavaFX & SWT 5
M Swing Vorgehen beim Aufruf der Klassen/Methoden AWT, Swing, JavaFX & SWT 7
S 2D-Grafik repaint()-Aufruf. Und nichts geschieht. AWT, Swing, JavaFX & SWT 5
F 2D-Grafik Grafikproblem nach Aufruf von JColorChooser-Dialog AWT, Swing, JavaFX & SWT 6
D Swing JOptionPane verschwindet beim 2. Aufruf einfach so?? AWT, Swing, JavaFX & SWT 2
A Swing JFileChooser - Größenänderung nach Aufruf von showOpenDialog() AWT, Swing, JavaFX & SWT 15
E AnimationLoop - Problem bei Aufruf von repaint AWT, Swing, JavaFX & SWT 6
W Funktionen, sowie aufruf einiger Komponenten AWT, Swing, JavaFX & SWT 4
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18
P JPanel-Aufruf funktioniert nicht AWT, Swing, JavaFX & SWT 5
K Swing setPreferredWidth für JTable funktioniert nur beim ersten Aufruf!? AWT, Swing, JavaFX & SWT 8
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
X Alte Frame-Größe beim wiederholten Aufruf AWT, Swing, JavaFX & SWT 5
D Aufruf neuer Klasse ohne Erzeugung eines neuen Fensters AWT, Swing, JavaFX & SWT 3
C Unterschiedlicher Aufruf der paint() Methode ? (AWT/Swing) AWT, Swing, JavaFX & SWT 2
J Swing setLocation Aufruf in JApplets 20 mal langsamer als in JFrames AWT, Swing, JavaFX & SWT 8
C SWT SWT Dialogfenster blitzen bei deren Aufruf AWT, Swing, JavaFX & SWT 2
P seltsame Performance Probleme bei 2 Guis abhängig vom Aufruf AWT, Swing, JavaFX & SWT 8
JFeel-x repaint für Aufruf von paintComponent-Klasse ungeeignet? AWT, Swing, JavaFX & SWT 11
Dragonfire ZoomImage flackert -> Fehler: repaint-Aufruf [gelöst] AWT, Swing, JavaFX & SWT 5
D Container des JFrame zeichnet sich nicht bei Aufruf von paintAll AWT, Swing, JavaFX & SWT 9
S NullPointerException bei Aufruf von updateUI() beim JFrame AWT, Swing, JavaFX & SWT 12
A preferredLayoutSize aufruf erzwingen AWT, Swing, JavaFX & SWT 4
D JTab <--> JPanel aufruf per Button AWT, Swing, JavaFX & SWT 2
G Keine Anzeige von Grafik bei externem paintComponent-Aufruf AWT, Swing, JavaFX & SWT 2
M Problem mit erneutem Aufruf AWT, Swing, JavaFX & SWT 4
K g.DrawImage unter paintComponent klappt nur beim 1. Aufruf AWT, Swing, JavaFX & SWT 3
G ActionListener und Methoden-Aufruf aus anderen Klassen AWT, Swing, JavaFX & SWT 3
G NullPointerException bei Aufruf von JTabbedPane.getSelectedI AWT, Swing, JavaFX & SWT 7
P AWT: Expliziter repaint-Aufruf AWT, Swing, JavaFX & SWT 2
H doppelter Aufruf von selectionListener für JList AWT, Swing, JavaFX & SWT 4
J Aufruf externer Quellen aus java AWT, Swing, JavaFX & SWT 3
L Button Funktion zuweisen in WindowBuilder AWT, Swing, JavaFX & SWT 22
A Button mit Speicher-Funktion AWT, Swing, JavaFX & SWT 8
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
kilopack15 Buttons ohne Funktion AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
D SWT Button mit F5-Funktion AWT, Swing, JavaFX & SWT 1
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
C Swing JTextField Funktion zuweisen - Löschen von Buchstaben/Sonderzeichen AWT, Swing, JavaFX & SWT 6
K Funktion für das Bewegen des Balles AWT, Swing, JavaFX & SWT 5
A Trennung GUI und Funktion AWT, Swing, JavaFX & SWT 5
A Textfeld.append/.setText ohne Funktion AWT, Swing, JavaFX & SWT 2
F Swing JTextField in JList (Funktion beibehalten) AWT, Swing, JavaFX & SWT 2
U Disable-Funktion AWT, Swing, JavaFX & SWT 1
C Swing Durch Inhaltsänderung eines JTextfields eine Funktion aufrufen AWT, Swing, JavaFX & SWT 5
J Swing Nach SwingWorker Funktion aus der GUI Klasse aufrufen AWT, Swing, JavaFX & SWT 5
W Funktion aus einer Java Datei in eine andere einbauen AWT, Swing, JavaFX & SWT 25
W Funktion per Tastendruck aufrufen. AWT, Swing, JavaFX & SWT 10
T ableitung übermalt die funktion AWT, Swing, JavaFX & SWT 3
N Swing Funktion repaint() updated nicht AWT, Swing, JavaFX & SWT 5
lumo SWT Image funktion auf ImageDaten AWT, Swing, JavaFX & SWT 9
R mathematische Funktion x^2 AWT, Swing, JavaFX & SWT 6
R mathemathische Funktion x^2 AWT, Swing, JavaFX & SWT 2
J Progressbar mit einfacher Funktion AWT, Swing, JavaFX & SWT 6
L Swing Funktion animieren AWT, Swing, JavaFX & SWT 10
O Variablen an anonyme Funktion AWT, Swing, JavaFX & SWT 10
D Funktion JList.getSelectedValues() gibt nicht alle values zurück AWT, Swing, JavaFX & SWT 2
G Swing Update-Funktion für Swing-Anwendung AWT, Swing, JavaFX & SWT 5
J Swing JDialog mit static-Funktion anzeigen -> Rückgabewert AWT, Swing, JavaFX & SWT 3
I JTextArea mit Copy Paste Funktion AWT, Swing, JavaFX & SWT 7
H Funktion ausführen wenn Button gedrückt wird. AWT, Swing, JavaFX & SWT 2
B Restart-Funktion für einen Updatemechanismus?????? AWT, Swing, JavaFX & SWT 4
G F6 Funktion AWT, Swing, JavaFX & SWT 2
S Swing Button mit Funktion abbilden AWT, Swing, JavaFX & SWT 3
P Funktion ist nicht MAC kompatibel, warum? AWT, Swing, JavaFX & SWT 12
S Funktion nur ausführen, wenn Maus über Componente ist AWT, Swing, JavaFX & SWT 2
A Sleep Funktion / Thread-Problem ! AWT, Swing, JavaFX & SWT 11
GilbertGrape bei "Enter" Funktion ausführen, egal wo der Fokus AWT, Swing, JavaFX & SWT 2
F Jframe Exit Funktion überladen AWT, Swing, JavaFX & SWT 3
G kreis malen -> welche funktion? AWT, Swing, JavaFX & SWT 3
D SWT: Funktion zum Auslesen der Schriftgröße AWT, Swing, JavaFX & SWT 2
D GroupLayout an un plötzlich is CardLayout Funktion tot? AWT, Swing, JavaFX & SWT 10
R Editor mit "Gehe zu"-Funktion AWT, Swing, JavaFX & SWT 4
W Unterdrückung von FrameIcon-Funktion im JInternalFrame AWT, Swing, JavaFX & SWT 5
G Funktion für PopUp Menü AWT, Swing, JavaFX & SWT 32
F ZOOM Funktion in JTextPane AWT, Swing, JavaFX & SWT 6
D paint-Funktion wird nicht ausgeführt AWT, Swing, JavaFX & SWT 6
A Drag and Drop Funktion mit JLabel AWT, Swing, JavaFX & SWT 5
E Beim Schließen des Fensters eigene Funktion aufrufen AWT, Swing, JavaFX & SWT 8
L JOP.showInputDialog: Abbrechen Button-Funktion beenden AWT, Swing, JavaFX & SWT 5
D setPreferredSize(), setMaximumSize() ohne Funktion? AWT, Swing, JavaFX & SWT 4
S JComboBox -> undo Funktion hinzufügen! AWT, Swing, JavaFX & SWT 2
Z Welche Funktion von JTextArea muß ich überschreiben? AWT, Swing, JavaFX & SWT 4
R TAB-Funktion in Fenster ändern - genauer: STRG+TAB AWT, Swing, JavaFX & SWT 5
P Rückgängig-Funktion im Malprogramm AWT, Swing, JavaFX & SWT 3
H Eigener Dialog mit Rückgabe -> Warten auf Button AWT, Swing, JavaFX & SWT 3
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
C FileChooser Save-Dialog zeigt Files nicht an AWT, Swing, JavaFX & SWT 3
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
E Swing Dialog modal aufrufen AWT, Swing, JavaFX & SWT 2
T JavaFX Dialog schließt ohne dass es schließen soll AWT, Swing, JavaFX & SWT 1
RalleYTN Modaler Dialog und JTree Node mit sehr... seeeeehr vielen Elementen AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Anzeige

Neue Themen


Oben