从另一个开放JFrame,而不是每次都打开一个全新的JFrame

时间:2016-01-10 06:29:14

标签: java jframe listener action frame

所以基本上我有一个2D游戏,(基本上是过去敲门的链接),当你按下e键时,invetory打开,并隐藏在关闭状态。问题是,每当我按下e键时,它会打开一个包含所有初始值的新invetory,我希望它在初始值之后打开一个新的。会发布代码,但它很长而且很混乱(我是初学者)

1 个答案:

答案 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。

希望这会有所帮助......