【问题标题】:Open a JFrame from another, without opening a brand new one every time从另一个打开一个 JFrame,而不是每次都打开一个全新的
【发布时间】:2016-01-10 06:29:14
【问题描述】:

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

【问题讨论】:

  • 我会考虑使用一个可以覆盖在你游戏上的弹出面板,可以通过 glassPane(假设你使用 Swing)
  • 为什么不重用同一个 JFrame,用setVisible() 显示和隐藏它?只需在某个地方创建一次。

标签: java jframe listener action frame


【解决方案1】:

据我了解,您需要在按下“e”键时从主 JFrame 提供一个库存 JFrame,并在关闭库存 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。

希望对你有帮助……

【讨论】:

  • 谢谢!真的很有帮助!
猜你喜欢
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多