Swing jMenu

twa

Mitglied
Hallo leute, hoffe mir kann jemand helfen!
Habe folgendes Problem: Wir haben in der schule eine aufgabe bekommen und sollen für ein programm das .txt dateien speichert und öffnet eine openRecent funktion schreiben. Die openRecent funktion soll voher geöffnete od. gespeicherte auflisten und wenn man auf den namen einer vorhergegangen datei klickt diese auch geöffnet werden.
Dazu habe ich auf eine ArrayList die pfad der dateien geschrieben und auf eine zweite ArrayList den namen, von dieser zweiten ArrayList schreibe ich die Namen als Strings auf ein jMenu. Das Problem dabei ist, von diesem jMenu kann ich die Name-Strings nicht mehr holen, also weiß jemand irgent eine Methode die mir den angeklickten string zurück gibt ?
 

diggaa1984

Top Contributor
wenn ich mich nicht täusche sind die einträge der menüs JMenuItems .. diese sind von AbstractButton abgeleitet der eine getText() methode hat .. damit müsste das gehen. Sprich im actionPerformed eines angehängten ActionListeners könntest du deren Text auslesen
 

twa

Mitglied
Ja die getText() methode hab ich schon gesehen, aber gibt mir die den geklickten String zurück von denen die mir dynamisch auf das jMenu geschrieben werden ?
 

twa

Mitglied
So, hab jetz als Anhang ein Bild von meinem openRecent mitgeschickt, damit es besser erklärbar ist:
Der Open Recent Eintrag in File soll mir di vorher geöffneten/gespeicherten Dateien anzeigen, was er ja auch tut, das Problem ist aber wie bekomme ich den String der im Open Recent angeklickt wird??
 

Ebenius

Top Contributor
Am einfachsten nutzt Du Actions für das Menü. Jeder der jetzt lacht: Hier gibt's wirklich nix was einfacher geht. Eine Action beschreibt den Inhalt und die auszuführende Aktion eines wie auch immer gearteten Buttons; zum Beispiel auch eines JMenuItems.

Synchronisierte Listen/Arrays sind natürlich unschön. Vorschlag: Vergiss die Liste die nur die Namen benutzt und behalte Dir nur die Liste mit den absoluten Dateinamen. Zum Beispiel sowas:
Java:
/* $Id$ */

/* Copyright 2010 Sebastian Haufe

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       [url]http://www.apache.org/licenses/LICENSE-2.0[/url]

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License. */

package com.ebenius;

import java.awt.event.ActionEvent;
import java.io.File;

import javax.swing.*;

public class RecentFileMenuTestGui {

  static void createAndShowGui() {
    // Hier natürlich Deine wirklichen Recent Files
    final String[] testFileNames =
          { "/home/ebenius/Some File.txt",
            "/home/ebenius/private/My Private File.txt" };

    // Aufbau des Recent Files Menüs
    final JMenu recentMenu = new JMenu("Recent");
    for (String fileName : testFileNames) {
      // Am einfachsten die File-Klasse benutzen, wenn man Dateinamen zerhackstückeln will
      final File file = new File(fileName);
      final AbstractAction action = new AbstractAction(file.getName()) {

        public void actionPerformed(ActionEvent e) {
          // Wir holen das File-Objekt aus der Action (siehe 7 Zeilen weiter unten)
          final File f = (File) getValue("FileToOpen");
          System.out.printf("Open the recent file: %s%n", f);
        }
      };

      // Das File-Objekt legen wir einfach in der Action mit ab
      action.putValue("FileToOpen", file);
      recentMenu.add(action);
    }

    // Das Menü
    final JMenu fileMenu = new JMenu("File");
    fileMenu.add(recentMenu);

    // Der Menübalken
    final JMenuBar menuBar = new JMenuBar();
    menuBar.add(fileMenu);

    // ein bisschen GUI
    final JFrame f = new JFrame("Test Frame: RecentFileMenuTestGui");
    f.setJMenuBar(menuBar);
    f.setSize(640, 480);
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setVisible(true);
  }

  /**
   * Test main method.
   * 
   * @param args ignored
   */
  public static void main(String[] args) {
    // GUI auf dem EDT aufbauen
    SwingUtilities.invokeLater(new Runnable() {

      public void run() {
        createAndShowGui();
      }
    });
  }
}
Hilft Dir das Beispiel schon weiter, oder brauchst Du dazu noch Erklärungen?

Ebenius
 
Zuletzt bearbeitet:

twa

Mitglied
Danke Ebenius, aber am liebsten wäre es mir wenn du eine möglichkeit wüstesst wie ich mir einfach den geklickten string hole kann, da wir in der schule das als Vorgabe bekommen haben..
Aber ansonsten einmal vielen danke, ich werd einfach mal so versuchen
 

Ebenius

Top Contributor
Na dann: ActionListener an jedes JMenuItem dranhängen:
Java:
menuItem.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    final JMenuItem menuItem = (JMenuItem) e.getSource();
    System.out.println(menuItem.getText());
  }
}
Ebenius
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ExceptionOfExpectation JMenu, setMnemonic(Char k) bringt keine Wirkung AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
Y Backgroundcolor JMenu AWT, Swing, JavaFX & SWT 2
D Merkwürdiges Verhalten vom JMenu AWT, Swing, JavaFX & SWT 4
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
S Swing JMenu löscht auf panel gezeichnetes AWT, Swing, JavaFX & SWT 3
llabusch Prüfen ob JMenu leer ist & löschen AWT, Swing, JavaFX & SWT 1
3 Swing Vertikaler Separator zwischen JMenu's AWT, Swing, JavaFX & SWT 2
S JMenu unter JPanel versteckt AWT, Swing, JavaFX & SWT 5
S jMenu wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
T JMenu reagiert auf F-Taste AWT, Swing, JavaFX & SWT 6
M JMenuBar, JMenu, JMenuItem wird nicht angezeigt AWT, Swing, JavaFX & SWT 16
Jagson Mit JMenu auf jDialog zurück? Wie? AWT, Swing, JavaFX & SWT 8
Kenan89 JMenu Fragen AWT, Swing, JavaFX & SWT 5
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
R JMenu aus Ordnern AWT, Swing, JavaFX & SWT 4
P JMenu aus Dateistruktur AWT, Swing, JavaFX & SWT 2
I JMenu AWT, Swing, JavaFX & SWT 5
M Swing JMenu verdeckt durch Komponente (aber kein AWT und Swing mix!?) AWT, Swing, JavaFX & SWT 3
frankred Swing JMenu verschwindet nicht beim klicken ausserhalb des JMenu! AWT, Swing, JavaFX & SWT 4
F JMenu auf JPanel AWT, Swing, JavaFX & SWT 5
E Swing JMenu in GUI einbinden AWT, Swing, JavaFX & SWT 5
S Probleme mit JMenu und JMenuItem AWT, Swing, JavaFX & SWT 2
E JMenu übersetzen AWT, Swing, JavaFX & SWT 9
W JMenu wird vom JPanel ständig überzeichnet... Abhilfe? AWT, Swing, JavaFX & SWT 3
P JMenu-Erweiterung in externer Datei AWT, Swing, JavaFX & SWT 5
T Swing JMenu als Button behandeln AWT, Swing, JavaFX & SWT 4
R JMenu in JToolBar AWT, Swing, JavaFX & SWT 6
T Swing JMenu falsch positioniert AWT, Swing, JavaFX & SWT 2
M JMenu teilweise unter einer JComponent AWT, Swing, JavaFX & SWT 4
Developer_X Swing JMenu Bug gefunden AWT, Swing, JavaFX & SWT 5
D Swing JMenu wieder schließen lassen AWT, Swing, JavaFX & SWT 7
E Swing Einfache Frage zu JMenu AWT, Swing, JavaFX & SWT 4
hdi Welche Klasse + Listener für JMenu AWT, Swing, JavaFX & SWT 2
A JMenu Bug? AWT, Swing, JavaFX & SWT 12
J JMenu unterschiedliche Background einstellen AWT, Swing, JavaFX & SWT 5
C JMenu bzw. JButton mit URL versehen AWT, Swing, JavaFX & SWT 2
G ActionListener auf JMenu funktioniert nicht AWT, Swing, JavaFX & SWT 4
X JMenu AWT, Swing, JavaFX & SWT 2
D Abfrageproblem bei JMenu mit Icon AWT, Swing, JavaFX & SWT 2
Ernesto95 Programmabsturz beim Einbinden eines JMenu AWT, Swing, JavaFX & SWT 18
P jMenu ohne Menubar - Jigloo zeigts AWT, Swing, JavaFX & SWT 2
S JMenu und ActionListener per Schleife erzeugen AWT, Swing, JavaFX & SWT 3
G Scrollbares JMenu AWT, Swing, JavaFX & SWT 4
A Bei Klick auf disabled JMenuItem JMenu nicht schließen AWT, Swing, JavaFX & SWT 2
G JMenu problem mit der Breite von einer JCheckBox AWT, Swing, JavaFX & SWT 2
V JMenu und die Tabs von JTabbedFrame sind auf einmal schwarz AWT, Swing, JavaFX & SWT 3
H JMenu wird leider unterhalb! der CanvasFläche dargestellt AWT, Swing, JavaFX & SWT 5
X Swing: Bilder überlagern JMenu AWT, Swing, JavaFX & SWT 4
T ImageIcon als Seperator im Jmenu AWT, Swing, JavaFX & SWT 8
padde479 JMenu mnemonic AWT, Swing, JavaFX & SWT 3
N JMenu und JPanel AWT, Swing, JavaFX & SWT 5
P JMenu / JMenuItem durch Rekursion Icons entfernen AWT, Swing, JavaFX & SWT 4
B 1 JMenu in Mehrere JMenus AWT, Swing, JavaFX & SWT 2
G Canvas, JMenu, und BufferStrategy AWT, Swing, JavaFX & SWT 2
D JMenu -> Accelerator AWT, Swing, JavaFX & SWT 2
I JMenu(Item) und FocusListener AWT, Swing, JavaFX & SWT 3
T JMenu/JMenuItem Component auf der geaddet wurde AWT, Swing, JavaFX & SWT 16
G JMenu About ohne JMenuItem AWT, Swing, JavaFX & SWT 11
R JMenu + Farbe von Hintergrund AWT, Swing, JavaFX & SWT 2
M JMenu verschwindet unter ScrollPane AWT, Swing, JavaFX & SWT 3
D Schriftfarbe ändern (JFrame, JMenu etc) AWT, Swing, JavaFX & SWT 3
K JMenu wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
I JMenu wird nicht dargestellt AWT, Swing, JavaFX & SWT 12
H JMenu soll "offen bleiben" AWT, Swing, JavaFX & SWT 3
M JMenuBar - JMenu mit Tastenkombination aufrufen / anzeigen AWT, Swing, JavaFX & SWT 8
redztripe Haken in JMenu setzen? AWT, Swing, JavaFX & SWT 8
G Icon zu JMenu AWT, Swing, JavaFX & SWT 3
M JMenu auf JComponent? AWT, Swing, JavaFX & SWT 10
G JMenu - neuer Frame AWT, Swing, JavaFX & SWT 2
X Verschwinden des JMenu unterbinden AWT, Swing, JavaFX & SWT 3
R JMenu copy Focus-Problem AWT, Swing, JavaFX & SWT 2
E JTextArea überlagert JMenu AWT, Swing, JavaFX & SWT 2
D JMenu spinnt AWT, Swing, JavaFX & SWT 7
Z JMenu und JMenuItem: MouseOver-Farbe ändern AWT, Swing, JavaFX & SWT 9
B Alle jMenu und JMenuItem in einem Array AWT, Swing, JavaFX & SWT 4
R JMenu einträge werden überdeckt AWT, Swing, JavaFX & SWT 3
T JMenu erscheint nicht richtig AWT, Swing, JavaFX & SWT 6
G JMenu Info-Fenster ganz Rechts AWT, Swing, JavaFX & SWT 5
H JMenu zuklappen AWT, Swing, JavaFX & SWT 7
K JMenu Aktionen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben