К сожалению, я не изучал Java, я знаю другие языки программирования, за исключением Java.Java, как мне установитьText из JMenuItem из другого класса?
Я знаю, как создать меню и добавить элементы в меню. Я понял это из моих простых базовых java-книг. Однако у меня есть доступ к части программного обеспечения с открытым исходным кодом, и мне нужно сделать некоторые настройки, чтобы он работал для меня, и я застрял. Поэтому я предоставлю код того, что происходит, и предоставим код того, что у меня есть, и, надеюсь, кто-то может заполнить недостающие части и объяснить, как это работает, как они работают.
Код ниже является частью файла, который вызывает TranslatorAction.java. Он вызывает его в строке при создании нового элемента меню. Я полностью понимаю эту часть. Я только разместил этот код, чтобы вы могли видеть, что оператор импорта не импортируется для JMenuItem и что элемент меню добавляется косвенно из вызова menu.add. AdminMenu.add создает элемент меню, создавая объект/класс? с параметрами при новом 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);
}
Когда новый TranslatorAction() вызываются из выше для создания нового пункта меню. У меня возникла проблема с доступом к настройке текста для нового JMenuItem. Я знаю, играя с кодом, что линия супер («тест»); устанавливает новый текст JMenuItem. Я хочу иметь возможность установить этот набор в переменную, чтобы его можно было изменить «на лету». Ниже приведен весь файл, который вызывается сверху с помощью adminMenu.add (New TranslatorAction());
TranslatorAction код Java файл
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) {
}
}
Спасибо за время каждый одних за помощь мне. Shawn
Измените свой вопрос, чтобы дать полный пример. В частности, все методы должны быть внутри класса. Вы также должны исправить отступы. –
Кроме того, я не понимаю, что именно вы спрашиваете. Вы должны показать в своем примере, где вам нужно добавить код, который вы не знаете, что положить. –
Я прокомментировал код с тем, что я понимаю и что мне нужно изменить. строка super («test»); это то, что мне нужно изменить. Эта строка, которую я знаю, изменяет текст в меню файла. Поэтому, если я изменю его на супер («java»); в меню файла будет java. Мне нужно изменить это динамически. Поэтому я предполагаю, что мне нужно знать не код для его изменения динамически, но что мне нужно сделать для доступа к setText для JMenuItem, который создается из вызова другого класса adminMenu.add (new translatorAction()); –