所以基本上我有一个 2D 游戏(基本上是过去的仿制品的链接),当你按 e 键时,库存会打开,关闭时会隐藏。问题是,每次我按 e 键时,它都会打开一个包含所有初始值的新库存,我希望它在初始值之后打开一个新库存。会发布代码,但它又长又乱(我是初学者)
最佳答案
据我了解,您需要在按下“e”键时从主 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 时,它都会被隐藏,因为为 Inventory 框架设置的默认关闭操作是 HIDE_ON_CLOSE。
希望这有帮助...
关于java - 从另一个 JFrame 打开 JFrame,无需每次都打开一个全新的 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34702763/