JMenuItem Kann nicht nach einem String benannt werden...

Diskutiere JMenuItem Kann nicht nach einem String benannt werden... im Java Basics - Anfänger-Themen Bereich.
F

flamboyent22

Hallo, ich habe das Problem, dass ich gerne So viele JMenuItems Erstellen Möchte wie Files im fileArray sind.
Wie es scheint ist es nicht möglich ein JMenuItem Nach einem String zu benennen, währe schön wenn mir jemand helfen kann.

Java:
for (int i = 0; i < FileClass.fileArray.length; i++) {
    System.out.println (FileClass.fileArray[i]);
    String MenuName = ("MenuItem" + i);
    JMenuItem MenuName = new JMenuItem(FileClass.fileArray[i]);
    Bar1.add(MenuName);
}
 
J

JustNobody

Was bitte ist FileClass.fileArray? Was für eine Fehlermeldung bekommst du genau?

Generell nimmt ein Konstruktor von JMenuItem ein String, also wäre fileArray ein String[], dann sollte es prinzipiell gehen.
 
F

flamboyent22

FileClass.fileArray ist ein String[] wo Files aus einem Pfad gespeichert werden...

die Fehlermeldung ist:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Duplicate local variable MenuName

(die Zeile wo das JMenuItem erstellt wird)
 
J

JustNobody

Du kannst zwei Variablen nicht gleich nennen. Du definierst eine Zeile drüber bereits die Variable MenuName.

Also eine der Variablen umbenennen. Und wenn du schon dabei bist: befolge auch die Java Naming Standards, d.h. Variablen fangen mit kleinem Buchstaben an.
 
F

flamboyent22

Sry, ich glaube ich habe mich falsch ausgedrückt.

JMenuItem menuItem = new JMenuItem (FileClass.fileArray);

Ich würde gerne das nach einem String benennen, da ich dann endless JMenuItems Generieren Kann. :)

danke für die schnellen Antworten
 
T

temi

Vielleicht so:
Java:
for (int i = 0; i < FileClass.fileArray.length; i++) {
    System.out.println (FileClass.fileArray[i]);
    String menuName = ("MenuItem" + i);
    JMenuItem menuItem = new JMenuItem(menuName);
    Bar1.add(MenuName);
}
oder
Java:
for (int i = 0; i < FileClass.fileArray.length; i++) {
    System.out.println (FileClass.fileArray[i]);
    // Zeile entfernt, weil Name "MenuName" doppelt
    JMenuItem menuItem = new JMenuItem(FileClass.fileArray[i]);
    Bar1.add(menuItem);
}
Deine Fehlermeldung sagte jedenfalls, schlicht und einfach, dass der Name "MenuName" zweimal deklariert wurde.
 
J

JustNobody

Du kannst die JMenuItems doch in einem Array, einer List, Map, was auch immer speichern.

Du musst lediglich die Datenstruktur wählen, die Du brauchst. Wenn du die Zuordnung zu einem String oder einer anderen Variable brauchst, dann wäre eine Map sinnvoll.
 
F

flamboyent22

@temi
sry, aber so habe ich das nicht gemeint
JMenuItem menuItem = new JMenuItem(FileClass.fileArray);
das in Blau Möchte ich gerne nach jedem repeat Ändern, damit man immer ein neues JMenuItem Dazukriegt
 
T

temi

@temi
sry, aber so habe ich das nicht gemeint
JMenuItem menuItem = new JMenuItem(FileClass.fileArray);
das in Blau Möchte ich gerne nach jedem repeat Ändern, damit man immer ein neues JMenuItem Dazukriegt
Wozu? Du bekommst auch so in jedem Schleifendurchlauf ein neues JMenuItem erstellt, dass du Bar1 hinzufügen kannst. Das geht auch:
Java:
for (int i = 0; i < FileClass.fileArray.length; i++) {
    System.out.println (FileClass.fileArray[i]);
    Bar1.add(new JMenuItem(FileClass.fileArray[i]));
}
Es ist nicht erforderlich dafür eine spezielle Variable zu haben. Bar1 hat intern eine geeignete Datenstruktur, um die Referenzen auf die erzeugten Items aufnehmen zu können.
 
T

temi

Java:
Map<String, JMenuItem> items = new HashMap<>();

for (int i = 0; i < FileClass.fileArray.length; i++) {
    System.out.println (FileClass.fileArray[i]);
    items.put("Item" + i, new JMenuItem(FileClass.fileArray[i]));
}
// Danach hast du eine Map mit vielen JMenuItems...
         
JMenuItem item = items.get("Item2"); // Holt "Item2" aus der Map.
 
Thema: 

JMenuItem Kann nicht nach einem String benannt werden...

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben