当前位置: 首页 > 知识库问答 >
问题:

带有GUI的Black Jack,在另一个类中从ActionListener向主框架添加对象

韩阳成
2023-03-14

我用gui制作了一个黑杰克版本。我的问题是,大多数实现都在创建窗口的同一个类中。类GameWindow初始化JFrame,添加卡图标等可视对象,文本存储到JLabel中,然后将其添加到不同的JPanel中。

这很好,但是GameWindow(实现了ActionListener)也将ActionListener添加到按钮(这是简单的JButton而不是创建的类),并实现了ActionPerform。

我想为每个按钮创建一个类,比如“类交易实现动作监听器”,然后让类处理动作执行(动作事件e)。问题是如何从另一个类向游戏窗口添加对象?如何将甲板、玩家(分数和卡片,存储在数组列表中)和银行(分数和卡片)对象发送到相应类(交易、停留和点击)中的动作执行?

我不想发布代码,因为它很多,因为我尝试了不同的解决方案,现在有点乱,但是如果你想让我发布代码的任何部分或全部,请告诉我。

编辑,以为是小文本;)

我现在使用的类是CardDeck,有一个ArrayList和像drawCard()、shuffle()等方法。Card有一个ImageIcon和一个保存其值的int。GameWindow扩展了JFrame,实现了ActionListener,初始化了JFrame,还处理了与JButtons deal、Hit和Stay相关的ActionPerformed(这就是我想要改变的)。玩家,持有在ArrayList中绘制的玩家卡,分数作为int Bank,与玩家相同,但用于ai。主,执行GameWindow。

共有1个答案

姜奇
2023-03-14

分而治之。你需要一个GameEngine类,它保存数据并提供操作它的方法。你需要一个单独的GameWindow,它处理显示游戏,但依赖GameEngine来保存数据并实际运行游戏。ActionListner需要一个对GameEngine的引用,仅此而已;他们可以通过调用方法来做的一切。

GameEngine本身可以在内部与其他类一起使用:Deck、Card等。尝试让每个类代表一个定义良好的概念。将代码放在它使用的数据附近。

 类似资料:
  • 我是java新手,我正试图编写我的第一个“更大”的程序,包含几个类。我在类“CompetitionProgram”中创建了一个ArrayList并将其声明为private。 我的程序中需要这两个类(Event&ListOfEvents),这是需求之一。事件--它只是表示事件本身,比如事件名称和尝试次数(它是一个体育事件)。和ListOfEvents--它表示列表本身,并包含用于添加事件、删除事件和

  • 我有2面板(2类,从JPanel扩展),1帧(1类,从JFrame扩展) 我的第一个小组——Welcome小组: 我的第二个面板-董事会面板: 我的主框架——主机 我的问题:帮我写代码,在面板的按钮上添加ActionListener(材料示例)。当我按下播放按钮(WelcomePanel)时,WelcomePanel被隐藏,BoardPanel被显示。当我退出BoardPanel(按下close按

  • 我创建了一个JPanel,上面有我需要的所有JRadioButtons(称为PortSettings)。我还有一个按钮,叫做端口设置,当用户单击该按钮时,我需要JPanel上来显示单选按钮。我尝试将JPanel添加到actionlistener中,但没有效果。我的代码在下面。除了portsettings按钮之外,我已经从其他按钮中删除了所有其他ActionListener。如果这个问题让人困惑,我

  • 我有一个jFrame,用户在其中输入数据,还有一个控制器类,我想在其中将数据输入一个新对象。目前,我已经在jFrame中的按钮中添加了一个侦听器,但无法让它识别控制器类中的actionPerformed方法。 侦听器的“this”部分表示它正在泄漏到构造函数中,而类本身则表示: “CreateAccountGUI不是抽象的,并且不会覆盖Action Listener中的抽象方法actionPerf

  • 然后在'main'类中,我将'panel'添加到JFrame中。 我的问题是,我正在尝试实现一个actionListener到一个添加在'Panel'类内部的按钮。actionListener函数将添加更多按钮并使用G.DrawString的按钮。现在,我要将ActionListener放置在哪里,以便这样做呢?如何将g.drawString用于特定的面板,而g.drawString行位于另一个类

  • 问题内容: 我是Java的新手,但是碰到了砖墙。我想从另一个类访问GUI组件(已在一个类中创建)。我正在从一个类创建一个新的GUI类,就像这样; 并且我可以访问该类中的组件,但是当我去另一个类时,我不能。我真的只需要访问即可更新其内容。有人可以向我指出正确的方向,任何帮助将不胜感激。 类: 问题答案: 首先要尊重封装规则。做你的领域。接下来,您需要输入需要访问的字段。 然后,您需要将GUI传递给访