如何将信息从JFrame传输到实例化它的方法?

时间:2012-11-04 12:08:20

标签: java swing scope jframe jdialog

我正在编写一个应用程序(生命游戏的实现)并希望它按如下方式工作:

  1. 弹出一个JFrame(不是JDialog!),用户可以选择一些设置。
  2. 按此框架上的“开始”按钮可存储某处的设置,关闭它,然后打开游戏生命框架。
  3. 实现这一目标的最佳方法是什么?

    我目前的方法是从包含main方法的单独类控制应用程序,该方法应该存储设置并处理两个JFrame的显示/隐藏,但我遇到了一些问题:我想要监听器设置框中的“开始”按钮向主要方法发出信号,表示是时候存储所选设置,隐藏此框架并显示GoL框架。但是,我不知道如何将这些信息传递给main方法,因为我无法从“settings”框架内访问其类的范围。我可以从main方法访问“settings”框架,因此获取设置并关闭框架不是问题,问题是要知道何时来执行此操作。

    //In the class "SettingsFrame"
    startButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            //WHAT TO DO HERE?
        }
    });
    

    我有点像初学者,所以也许我的尝试方法存在根本性的错误。在不使用JDialog的情况下实现上述功能的最优雅方法是什么?

    (我已经查看了SO并发现了这个答案Passing values between JFrames。但是,附带的示例使用了一个JDialog,我猜测它会自动向调用方法发出信号,表示已按下“OK”按钮。我我很想知道如何实现这一目标。)

1 个答案:

答案 0 :(得分:2)

您需要将main方法的回调注册到设置框架。按下“开始”按钮时,动作侦听器应关闭窗口,并调用回调,传递在设置框中输入的设置。然后回调方法将打开生命游戏框架。