java - 从另一个 JFrame 打开 JFrame,无需每次都打开一个全新的 JFrame

标签 java jframe listener action frame

所以基本上我有一个 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/

相关文章:

java - ExecutorService 未经检查的分配

java - 如何用简单的文本创建 JFrame?

java - 我有一个包含菜单项属性的类。我需要填充三个 JList。我怎样才能这样做呢?

java - 主窗口内的新窗口?

java - 如果键入 AutoCompleteTextView 完整建议词,如何监听

java - 由于 Java 程序,Tomcat 未启动

java - 如何保证泛型类型的类型

java - 实现和扩展一个类

javascript - 将事件从父元素传递到子元素( polymer )

java - 需要编写java程序将英语转换为盗版谈话