所以基本上我有一个2D游戏,(基本上是过去敲门的链接),当你按下e键时,invetory打开,并隐藏在关闭状态。问题是,每当我按下e键时,它会打开一个包含所有初始值的新invetory,我希望它在初始值之后打开一个新的。会发布代码,但它很长而且很混乱(我是初学者)
答案 0 :(得分:0)
据我所知,您需要在按下'e'键时从Main JFrame提供Inventory JFrame,并在Inventory JFrame关闭时隐藏它。请尝试以下示例:
public class Main extends JFrame {
private Inventory inventoryFrame;
public Main()
{
inventoryFrame = new Inventory();
this.setTitle("Main");
this.setSize(500,500);
//when 'e' is pressed, show the inventory frame
this.addKeyListener(new KeyAdapter(){
@Override
public void keyTyped(KeyEvent e) {
System.out.println("invoked "+e.getKeyChar());
if(e.getKeyChar() == 'e' || e.getKeyChar() == 'E')
{
inventoryFrame.setVisible(true);
}
}
});
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String... s)
{
new Main().setVisible(true);
}
}
public class Inventory extends JFrame {
public Inventory()
{
//initialize the values here...
this.setSize(500,500);
this.setTitle("Inventory");
//on closing event... just hide it rather than closing it.
this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}
}
基本上,Main类保留了Inventory JFrame的一个对象,并在按下“e”时使其可见,并且每当库存关闭时,它都会被隐藏,因为为Inventory框架设置的默认关闭操作是HIDE_ON_CLOSE。
希望这会有所帮助......