gpt4 book ai didi

java - Java 静态/非静态问题

转载 作者:行者123 更新时间:2023-12-01 14:21:33 26 4
gpt4 key购买 nike

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

最佳答案

改变

    newThing = new NewThing(DesktopFrame.this);
newSem.setVisible(true);
thingEditMenu.add(NewThing.getItem());

    newThing = new NewThing(DesktopFrame.this);
newSem.setVisible(true);
thingEditMenu.add(newthing.getItem()); //variable name in lower case written

如果不是,您尝试在类上调用 getItem ,而不是对象,但由于该方法不是静态的,当然不会工作,您必须调用您的对象的它就在创建之前。

关于java - Java 静态/非静态问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17507979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com