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