所以我有三个不同的类......第一个是带菜单栏的桌面jframe。第二个是jdialog,最后一个是菜单项。我希望将Jdialog的结果传递给桌面jframe,从那里我想使用该信息在桌面Jframe中创建一个新的菜单项。静态/静态问题Java
以下是我有:
桌面的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”从JDialog类“NewThing”创建一个“newThing”实例。然后从这里,您单击此JDialog中出现的一个名为“Create”的按钮(出现在Desktop Jframe上)。当你点击按钮时,它会创建一个新的MenuItem,它将被添加到整个Desktop Jframe的“thingEditMenu”中。现在我的错误是在桌面Jframe的一行“thingEditMenu.add(NewThing.getItem());”。它说我无法对非静态方法“getItem”进行静态引用。问题是我希望不要使这个静态,因为MenuItem的信息会随着用户在该JDialog中的输入而改变。那么我怎样才能让它变成静态的,而不是实际上变成静态的?也有人有更好的方式来编码,这样我可以巩固?