【问题标题】:How to get User input in one Frame and get output in another JFrame?如何在一个框架中获取用户输入并在另一个 JFrame 中获取输出?
【发布时间】:2017-11-25 07:13:56
【问题描述】:

我们编写了一个有两个窗口的游戏:MainMenu 和 Playfield。当您单击 MainMenu 中的开始时 - Playfield 将打开。在 MainMenu 中有 2 个 JTextfields,两个玩家可以在其中输入他们的名字。目前 2 个 JTextfields 没有任何功能。

现在的问题是:我们想要得到这个名字并且我们想要存储它们直到有人获胜并且在获胜之后我们想要输出类似“xy wins!”的内容。在一个对话框中。我们如何在两个窗口中实现它?

【问题讨论】:

  • 我认为您需要对“模型-视图-控制器”进行一些研究,以更好地了解如何在类之间共享数据

标签: java jframe opendialog


【解决方案1】:

窗口只是您向用户呈现/获取一些信息的视图。 您需要将 MainMenu 中输入的数据存储在某个模型类中,两个框架都可以访问。

【讨论】:

    【解决方案2】:

    您的文本字段在哪个框架中以及您要在哪个框架中打印输出都无关紧要 - 组件层次结构(即哪个组件在哪个容器中)与处理输入和输出无关。

    在这种特殊情况下,您必须监听一个事件,告诉您JTextFields 已收到输入。这可能是

    • 来自FocusListener 的一个focusLost 事件,注册到JTextFields
    • 来自DocumentListener 的 changedUpdate/insertUpdate/removeUpdate 事件已注册到支持JTextField 的文档(即textfield.getDocument().addDocumentListener(...)
    • 来自JButton 的 ActionEvent 的动作事件,用户单击以确认其输入

    收到该事件后,从 JTextfield 中检索文本,将其存储在合适的变量/字段中,然后使用它来填充对话框中显示的文本消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-30
      • 2013-08-06
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 2020-09-18
      • 1970-01-01
      相关资源
      最近更新 更多