поэтому у меня есть три разных класса ... первый - это рабочий стол jframe с панелью меню. второй - это jdialog, а последний - элемент меню. Я надеюсь передать результаты Jdialog на рабочий стол jframe, оттуда я хочу использовать эту информацию для создания нового элемента меню на рабочем столе Jframe.Статические/нестатические вопросы Java
Вот что у меня есть:
Desktop JFrame (так называемый "DesktopFrame"):
thingAddMenu.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
newThing = new NewThing(DesktopFrame.this);
newSem.setVisible(true);
thingEditMenu.add(NewThing.getItem());
thingMenu.add(thingEditMenu);
bar.add(thingMenu);
}//end method actionPerformed
}// end anonymous inner class
);//end addActionListener
JDialog класс (так называемый "NewThing"):
btnCreate.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
item = new thingMenuItem(timeframe,num);
dispose();
}
});
getContentPane().add(GenInfo, BorderLayout.NORTH);
pack();
setResizable(false);
setLocationRelativeTo(parent);
}
public int getNum()
{
return num;
}
public JMenuItem getItem()
{
return item;
}
public String getTime()
{
return timeframe;
}
JMenuItem класс (так называемый "thingMenuItem"):
public class thingMenuItem extends JMenuItem
{
public thingMenuItem(String name, int num)
{
super(name);
addActionListener(
new ActionListener() // anonymous inner class
{
public void actionPerformed(ActionEvent event)
{
//do some task
} // end method actionPerformed
} // end anonymous inner class
); // end call to addActionListener
}
}
Это всего лишь фрагмент всего кода. Идея заключается в том, что вы нажимаете «thingAddMenu», чтобы создать экземпляр «newThing» из класса JDialog «NewThing». Затем отсюда вы нажимаете кнопку «Создать» в этом JDialog (который появляется на Jframe рабочего стола). Когда вы нажимаете кнопку, он создает новый элемент MenuItem, который будет добавлен в «thingEditMenu» для всей Jframe рабочего стола. Прямо сейчас моя ошибка находится в строке рабочего стола Jframe «thingEditMenu.add (NewThing.getItem());». В нем говорится, что я не могу статически ссылаться на нестационарный метод «getItem». Проблема в том, что я надеюсь не сделать это статичным, поскольку информация MenuItem изменится с вводом пользователя в этот JDialog. Итак, как я могу сделать его статическим, не делая его статическим? Также есть ли у кого-нибудь лучший способ закодировать это, чтобы я мог консолидироваться?