所以我有三個不同的類......第一個是帶菜單欄的桌面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中的輸入而改變。那麼我怎樣才能讓它變成靜態的,而不是實際上變成靜態的?也有人有更好的方式來編碼,這樣我可以鞏固?