Name eines JMenue als Parameter übergeben

Dida

Mitglied
Hallo Leute,
ich stehe auf dem Schlauch ...
Ich habe dynamisch ein JMenue erstellt, jetzt will ich ein MenueItem erstellen, indem ich meiner Methode den Namen des Menues als Parameter übergebe ...
Versuch:
Aufruf:
erstelleMenue("MenueName"); //Klappt
erstelleMenueItem("NamedDesMenuItems","MenueName"); //Klappt nicht

Methoden:
private void erstelleMenue(String nameMenue){
JMenu menu = new JMenu(nameMenue);
innerBar.add(menu);
}

private void erstelleMenueItem(String nameMenueItem, JMenu nameMenue){
nameMenue.add(new JMenuItem(nameMenueItem));
innerBar.add(nameMenue);
}

Ich komme nicht weiter ... Tipps?
 

Dida

Mitglied
Danke für die Tipps, stimmt, das adden der Bar ist nicht nötig. Habe ich schonmal rausgeschmissen. Der Forumsbeitrag hilft leider nicht weiter bei meinem Problem ... wie übergebe ich einen Parameter, der als String vorliegt an meine Methode, sodass ich ihn als menü-Namen ansprechen kann .... also string zu menü-objekt ... Noch eine Idee?
 

Dida

Mitglied
Der Fehler wird mir schon in eclipse angezeigt, d.h. es wird schon gar nicht kompiliert.
D.h. Objekt von JMenu wird erwartet, aber der übergebene Parameter passt nicht, davon gehe ich zumindest mal aus ... mir ist aber nicht klar wie ich den Menü-Namen richtig übergeben muss, damit er auch angesprochen werden kann.
 

Robat

Top Contributor
Das kann ja auch nicht klappen.
Du rufst deine Methode mit 2 Strings auf aber wenn du dir mal deine Methodensignatur anschaust: private void erstelleMenueItem(String nameMenueItem, JMenu nameMenue) dann siehst du, dass er einen String und eine JMenu erwartet.

Du musst also irgendwo ein JMenu deklarieren und es der Methode übergeben.

Java:
JMenu menu = new JMenu(..);
erstelleMenuItem("Neues Item", menu);

PS: Momentan erstellst du ja in deiner Methode erstelleMenue(..) lokal ein neues Menu. Schlauer wäre es wenn deine Methode ein JMenu zurückgibt und du diesen Rückgabewert einer globalen JMenu Variable zuzuweisen.

Also bspw:

Java:
public class TestKlasse
{

    private JMenu menu;

    public TestKlasse()
    {
         menu = erstelleMenu("Menu");
    }

    private JMenu erstelleMenu(String name)
    {
          JMenu menu;
          ....
         return menu;
    }

Gruß Robert
 

Dida

Mitglied
In der Theorie ist mir das klar, aber das Problem ist, dass ich den Menünamen schon per Dialogbox eingeben lassen will und ebenfalls per Auswahl den Untermenüpunkt hinzufüge ..
Also: "Gib den Menüpunkt an" --> "Gib den Namen des Untermenüpunkts an der hinzugefügt werden soll"
--> Dann gibt er z.B. Menüpunkt A an und als Untermenüpunkt AB.
--> Dann brauche ich den Methodenaufruf mit erstelleItem (name des Menüs, Name des Items).
Verstehst Du was ich meine?
 

Dida

Mitglied
... ich habs jetzt über die Position des Menüs in der Menübar gelöst,
--> übergabe mit int als Parameter
innerBar.getMenu(nameMenue).add(new JMenuItem(nameMenueItem));

Trotzdem muss das doch auch irgendwie über den Namen gehen, oder geht das nicht, weil es in einer Methode definiert wird und somit nicht von aussen ansprechbar?
 

krgewb

Top Contributor
Es ist ja sozusagen anonym. Du kannst du es so machen:
Füge die Elemente in eine ArrayList hinzu. Danach kannst du in einer for-Schleife alle abklappern. Bei JMenu und bei JMenuItem gibt es zum Glück die Methoden getName() und getActionCommand().

Ich weiß jetzt nicht, wie deine innerBar aussieht. Vielleicht kannst du auch dort per Schleife durchgehen und so automatisch die Position rauspicken lassen.
 

Dida

Mitglied
... ich werd jetzt position und Name in einer arrayList speichern und die dann als Menü ausgeben lassen, und so drauf zugreifen, das ist wahrscheinlich das geschickteste .... DANKE für euren Input!!!!
 

Viktim

Bekanntes Mitglied
... ich werd jetzt position und Name in einer arrayList speichern und die dann als Menü ausgeben lassen, und so drauf zugreifen, das ist wahrscheinlich das geschickteste .... DANKE für euren Input!!!!
Das brauchst du nicht, du musst einfach bloß statt einem String das richtige JMenu objekt übergeben.
 

Dida

Mitglied
... puh... ich werd das nochmal neu aufbauen müssen jetzt hab ichs über ArrayList gelöst und kann jetzt die einzelnen Menüpunkte nicht mehr ansprechen (um die Items anzufügen). Über
innerBar.getMenuCount() bekomme ich die richtige Anzahl ausgegeben, wenn ich aber darauf zugreifen will --> innerBar.getMenu(1).add... bekomme ich ein null ... innerhalb derselben methode .. das ist doch total unlogisch!
... mit ..getComponent(0) bekomme ich einen overflow an Informationen ...
javax.swing.JMenu[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=com.apple.laf.AquaMenuBorder@15ad321d,flags=264,maximumSize=,minimumSize=,prefer am Ende text=Buttontext
 

Thallius

Top Contributor
Gewöhn Dir doch bitte gar nicht erst an Objecte über Ihren Namen anzusprechen. Namen sind selten unique. Du bekommst bei der Denke die Du dir da gerade angewähnst später echt große Probleme. Objecte werden über ihre Referenz angesprochen. Und wenn man auf Objecte später noch einmal zugreifen will, dann muss man deren REferenz speichern und nicht deren Namen oder sonstige Konstruktor-Parameter.

Gruß

Claus
 

krgewb

Top Contributor
Der Forumsbeitrag hilft leider nicht weiter bei meinem Problem ...

Dort wurde gezeigt, dass eine Map verwendet werden kann. Das würde bei dir auch gehen.
In Maps kann man Schlüssel-Wert-Paare hinterlegen. In deinem Fall:
Schlüssel = Der Eindeutige Name von dem jeweiligen JMenu
Wert = Das Objekt der Klasse JMenu

Im Gegensatz zum ArrayList-Ansatz würde man sich das Schreiben von Code ersparen. Es muss nämlich keine for-Schleife geschrieben werden.

Namen sind selten unique.

Natürlich kann es passieren, dass zwei gleiche Namen erwünscht sind. Dieser Name wird dann dem Benutzer als Text vom JMenu angezeigt. Im Programmcode ist jedoch noch ein actionCommand hinterlegt. Dieser darf vom Text abweichen. So kann man jedem der beiden gleichnamigen Elemente einen eindeutigen actionCommand geben.
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Natürlich kann es passieren, dass zwei gleiche Namen erwünscht sind. Dieser Name wird dann dem Benutzer als Text vom JMenu angezeigt. Im Programmcode ist jedoch noch ein actionCommand hinterlegt. Dieser darf vom Text abweichen. So kann man jedem der beiden gleichnamigen Elemente einen eindeutigen actionCommand geben.
Der Ansatz ist trotzdem Unsinn ;)

Besser einfach direkt das erstellte Menu nutzen, um dem die Items anzuhängen, anstatt die erst in eine Map zu legen und dann anhand des Namens wieder da raus zu holen...

actionCommand hat nicht viel mit dem Namen zu tun...
 

krgewb

Top Contributor
Besser einfach direkt das erstellte Menu nutzen, um dem die Items anzuhängen, anstatt die erst in eine Map zu legen und dann anhand des Namens wieder da raus zu holen...
Aber sie will, dass der Benutzer nachträglich ein JMenuItem zu einem beliebigen bereits vorhandenen JMenu hinzufügen kann, indem er in der Konsole etwas eingibt. Wie kann so etwas programmiert werden?
 

mrBrown

Super-Moderator
Mitarbeiter
Aber sie will, dass der Benutzer nachträglich ein JMenuItem zu einem beliebigen bereits vorhandenen JMenu hinzufügen kann, indem er in der Konsole etwas eingibt. Wie kann so etwas programmiert werden?
Ich hänge immer noch an der Frage, wozu das gut sein soll ;)
Das hat was von "der siebzehnte Schritt nach dem zweiten"...

Da wäre Map der einzig sinnvolle Ansatz, im Gegensatz zu getName, getActionCommand etc.
Aber dann hat man halt MenuItems ohne Funktion...
 

Thallius

Top Contributor
Der Punkt ist, dass es ja lustig sein kann, dass der User durch eintippen eines Strings sich neue Menus erzeugen kann. Ich frage mich nur, wie bekomme ich dann irgendwelche Funktion an dieses Menu?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Name eines boolean ausgeben (nicht den Wert) Java Basics - Anfänger-Themen 43
J Parameter (Methode) -> Name eines Objekt Java Basics - Anfänger-Themen 3
D Name eines Terminals herausfinden Java Basics - Anfänger-Themen 3
D Name eines Objekts ermitteln Java Basics - Anfänger-Themen 5
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
B JaxB - Unique Name updaten / Referenzen in XML Java Basics - Anfänger-Themen 0
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
F Auto String mit Array Name aus Datei... oder so ähnlich Java Basics - Anfänger-Themen 4
E gleicher Name in der Basisklasse und in der Subklasse Java Basics - Anfänger-Themen 45
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
K File-Name Vergleich Java Basics - Anfänger-Themen 2
J javax.servlet.ServletException: Name is null Java Basics - Anfänger-Themen 7
D jsoup get class name mit leerzeichen Java Basics - Anfänger-Themen 7
J ArrayList Name mit String erstellen Java Basics - Anfänger-Themen 8
B Get property field von Name Java Basics - Anfänger-Themen 9
M Objekt Name für MethodenAufruf nachträglich zuweisen? Java Basics - Anfänger-Themen 2
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
L Name im Array suchen Java Basics - Anfänger-Themen 12
K Mit Scanner aus einer txt Datei lesen und jede Person mit name, vorname, geburtsdatum speichern Java Basics - Anfänger-Themen 5
M Name der Komponete/Variabel/Methode Java Basics - Anfänger-Themen 5
I Spieler Name eintragen und Random Gewinner Java Basics - Anfänger-Themen 4
D Taskmanager Name Java Basics - Anfänger-Themen 2
I JTree, Root-Name ändern Java Basics - Anfänger-Themen 4
T Erste Schritte Elemente finden, deren Name erst "zusammengesetzt" wird Java Basics - Anfänger-Themen 8
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
D Name einer Variable als String nutzen Java Basics - Anfänger-Themen 13
T Name des Objektes OOP Java Basics - Anfänger-Themen 4
O String name mit fortlaufender Nummer Java Basics - Anfänger-Themen 14
Y ENUM auslesen (Name des ENUM als Variable) Java Basics - Anfänger-Themen 4
D Mysql schauen Name bereits existiert Java Basics - Anfänger-Themen 7
E Java Name von Exe festlegen? Java Basics - Anfänger-Themen 7
T brauche den pfad Name! Java Basics - Anfänger-Themen 2
F String-Inhalt als Datatype-Name Java Basics - Anfänger-Themen 5
D Methode anhand deren Name aufrufen Java Basics - Anfänger-Themen 4
N Name zu sehr ähnlich??? Java Basics - Anfänger-Themen 12
K Datentypen Full qualified Name dynamisch gestalten Java Basics - Anfänger-Themen 7
E Welcher Package Name bei Eclipse/Android? Java Basics - Anfänger-Themen 2
H2SO3- name der klasse ausgeben Java Basics - Anfänger-Themen 6
-horn- public static double[][][] NAME() nur per RETURN Wertrückgabe möglich? Java Basics - Anfänger-Themen 20
Z objekt erstellen von canonical name einer klasse Java Basics - Anfänger-Themen 6
A Klasse importieren wenn 2 mal gleicher Name Java Basics - Anfänger-Themen 2
O DocumentListener -> Name des JTextFields bekommen Java Basics - Anfänger-Themen 2
G Name der Instanz einer Klasse. Java Basics - Anfänger-Themen 2
X Der Name des jars finden? Java Basics - Anfänger-Themen 8
J Objekt-name in Array speichern Java Basics - Anfänger-Themen 12
B jar name ermitteln Java Basics - Anfänger-Themen 6
X Ordner mit Tageszeit als Name anlegen Java Basics - Anfänger-Themen 5
J ArrayListen mit Name und Vater an JTree übergeben Java Basics - Anfänger-Themen 3
T Rechner-Name abfragen Java Basics - Anfänger-Themen 6
K java.lang.NoClassDefFoundError: Klasse (wrong name... Java Basics - Anfänger-Themen 17
V mehrere Instanzen gleicher Name möglich? Java Basics - Anfänger-Themen 3
G XML nächstes Child element (gleicher name) Java Basics - Anfänger-Themen 5
A String Array: Suche nach Name -> Wert? Java Basics - Anfänger-Themen 3
G name vom objekt Java Basics - Anfänger-Themen 8
B Name und PLZ begrenzen Java Basics - Anfänger-Themen 3
K Objekte erstellen, wenn der Klassen-Name als String vorliegt Java Basics - Anfänger-Themen 4
M Kette- oder der Java Name Java Basics - Anfänger-Themen 2
G Name von java-Dateien, *.java Java Basics - Anfänger-Themen 9
G Name einlesen Java Basics - Anfänger-Themen 15
B Woher kommt der Name Java? Java Basics - Anfänger-Themen 4
O viele Name mit jeweils zugehörigen Status in .txt Speichern Java Basics - Anfänger-Themen 16
T System.getProperty("os.name") Java Basics - Anfänger-Themen 13
G File Name Case Sensitive Java Basics - Anfänger-Themen 2
R Welche Componente (Name)? Java Basics - Anfänger-Themen 2
S Variabler Name für ein Objekt einer Klasse? Java Basics - Anfänger-Themen 10
X Property user.name über Konsole verändern Java Basics - Anfänger-Themen 6
F Array Unterschied Typ name[] Typ[] name Java Basics - Anfänger-Themen 7
L Name für Objekt übergeben Java Basics - Anfänger-Themen 3
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
A Rekursive Implementation eines Codes Java Basics - Anfänger-Themen 4
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben