Leider habe ich Java nicht gelernt, ich kenne andere Programmiersprachen mit Ausnahme von Java.Java, Wie setze ich Text von JMenuItem von einer anderen Klasse?
Ich weiß, wie man ein Menü erstellt und Elemente zum Menü hinzufügt. Das habe ich aus meinen einfachen Java-Basisbüchern herausgefunden. Allerdings habe ich Zugriff auf ein Stück Open-Source-Software und muss einige Verbesserungen vornehmen, damit es für mich funktioniert und ich feststecke. Also werde ich Code von dem, was vor sich geht, zur Verfügung stellen und Code von dem, was ich habe, geben und hoffentlich kann jemand die fehlenden Teile ausfüllen und erklären, wie es funktionierte, so wie es funktionierte.
Der folgende Code ist Teil der Datei, die TranslatorAction.java aufruft. Sie ruft sie in der Zeile auf, wenn ein neuer Menüeintrag erstellt wird. Ich verstehe diesen Teil vollständig. Ich habe diesen Code nur gepostet, damit Sie sehen können, dass die Importanweisung nicht für JMenuItem importiert wird und dass der Menüeintrag indirekt vom Aufruf menu.add hinzugefügt wird. Der adminMenu.add erstellt den Menüeintrag, indem er ein Objekt/eine Klasse erstellt ?? mit den paremeters neuen TranslatorAction
javax.swing.JMenu;
import javax.swing.JMenuBar;
import com.bo.actions.TranslatorAction;
private void createAdminMenu(JMenuBar menuBar) {
JMenu adminMenu = new JMenu(com.POSConstants.ADMIN);
adminMenu.add(new TranslatorAction());
menuBar.add(adminMenu);
}
Wenn neue TranslatorAction() aus der oben für die Erstellung des neuen Menüpunkt aufgerufen wird. Ich habe ein Problem beim Zugriff auf die Einstellung des Textes für das neue JMenuItem. Ich weiß vom Spielen mit dem Code, dass die Zeile super ("test"); setzt den neuen JMenuItem-Text. Ich möchte in der Lage sein, dies auf eine Variable zu setzen, so dass es im laufenden Betrieb geändert werden kann. Unten ist die ganze Datei, die von oben aufgerufen wird mit adminMenu.add (New TranslatorAction());
TranslatorAction Java-Datei Code
package com.bo.actions;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Icon;
import javax.swing.JTabbedPane;
import com.POSConstants;
import com.bo.ui.BackOfficeWindow;
public class TranslatorAction extends AbstractAction {
public TranslatorAction(){
//I know this sets the JMenuItem to Test. Again no importing of
//JMenuItem at all what so ever. But I need to set the JmenuItem
//to something on the fly instead of hard coding it. Can anyone
//show and explain how to dynamically create/change super("test"),
// so that way it is not hard coded?
super("Test");
}
public TranslatorAction(String name) {
super(name);
}
public TranslatorAction(String name, Icon icon) {
super(name, icon);
}
public void actionPerformed(ActionEvent e) {
}
}
Vielen Dank für jedes Mal, diejenigen, für mich zu helfen. Shawn
Bitte bearbeiten Sie Ihre Frage, um ein vollständiges Beispiel zu geben. Insbesondere sollten alle Methoden innerhalb einer Klasse sein. Sie sollten auch den Einzug korrigieren. –
Auch ich verstehe nicht, was Sie genau fragen. Sie sollten in Ihrem Beispiel zeigen, wo Sie Code hinzufügen müssen, den Sie nicht kennen. –
Ich habe den Code mit dem, was ich verstehe und was ich ändern muss, kommentiert. die Linie super ("Test"); ist was ich ändern muss. Diese Zeile, die ich kenne, ändert den Text im Dateimenü. Also wenn ich es in super ("java") ändere; Das Dateimenü wird Java enthalten. Ich muss das dynamisch ändern können. Also ich denke, was ich wissen muss, ist nicht der Code, um es dynamisch zu ändern, aber was muss ich tun, um auf setText für das JMenuItem zuzugreifen, das aus dem Aufruf der anderen Klasse adminMenu.add (new translatorAction()) erstellt wird; –