gpt4 book ai didi

java - 我需要帮助概念化我的 GUI 实现

转载 作者:行者123 更新时间:2023-12-02 01:14:16 25 4
gpt4 key购买 nike

我正在尝试制作一款可以有 n 名玩家的游戏。

问题是如果我不知道号码,如何为每个玩家制作一个JFrame

最初我计划为 5 个玩家制作多个框架、面板和 JButton 组件及其 Action 监听器,然后限制用户只能与 5 个玩家一起玩。但是,这仍然意味着为 5 个玩家制作 5 个选项按钮,因此 25 个按钮和 5 个框架,这看起来真的很荒谬。

我想知道是否有办法让这变得简单?我对 java 尤其是 GUI 部分真的很陌生。我想使用 Swing,而不是 JavaFX。

这就是我想要实现我的播放器的方式:

ArrayList<Players> players = new ArrayList();
gamePanel(players);

通常我会这样做

JFrame f = new JFrame(playerName);

但是如何用多个玩家对象制作多个帧呢?或者也许只是一帧根据玩家按下的按钮在玩家对象之间来回切换?基于某些获胜条件,我还想删除与玩家关联的帧,然后通过单击按钮获取更多用户输入,直到 ArrayList 中只有一个用户。我不知道如何进行这一切,我们将不胜感激!

最佳答案

最简单的方法是将您的 JFrame 对象存储在 HashMap 中。这样您就可以添加与播放器关联的新 JFrame:

HashMap<Player, JFrame> frames = new HashMap<>();
for (Player player : players) {
JFrame frame = new JFrame(player.getName());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// additional setup, creating buttons for the frame, ...
frames.put(player, frame);
}

之后您可以通过调用frames.get(player);轻松访问每个帧,例如frames.get(players.get(0)).dispose(); 关闭与第一个玩家关联的框架,然后 frames.remove(players.get(0)) 删除映射。

例如,您还可以轻松地迭代所有帧

for (JFrame frame : frames.values()) {
frame.setVisible(true);
}

要进一步阅读有关构建 GUI 的内容,我建议查看模型- View - Controller 模式。该模式对于组织模型(在您的情况下为玩家)与 View (在您的情况下为 JFrame)交互方式非常有用。

关于java - 我需要帮助概念化我的 GUI 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58912318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com