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

Java 我需要帮助概念化我的GUI实现,java,swing,user-interface,Java,Swing,User Interface,我正在尝试做一个游戏,我可以有n个球员 问题是,如果我不知道数字,我如何为每个玩家制作一个JFrame 最初,我计划为5名玩家制作多个框架、面板和JButton组件及其动作监听器,然后限制用户只能玩5名玩家。但是,这仍然意味着为5名玩家制作5个选项按钮,25个按钮和5个画面,这看起来真的很可笑 我想知道是否有办法让这变得容易?我对java真的很陌生,尤其是GUI部分。我想使用Swing,而不是JavaFX 这就是我想要实现我的播放器的方式: ArrayList<Players> pl

我正在尝试做一个游戏,我可以有n个球员

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

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

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

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

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

但是,如何使用多个播放器对象制作多个帧?或者仅仅是一个框架,根据玩家按下的按钮在玩家对象之间来回切换?基于某些赢的条件,我还想删除与播放器相关的帧,然后通过单击按钮获得更多用户输入,直到
ArrayList
中只有一个用户。我不知道如何去做这一切,帮助将不胜感激

最简单的方法是将
JFrame
对象存储在。通过这种方式,您可以添加与播放机关联的新
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);
}

为了进一步阅读构造GUI,我建议看一看模型-视图-控制器模式。该模式对于组织模型(在您的情况下是播放器)如何与视图(在您的情况下是JFrames)交互非常有用。

最简单的方法是将您的
JFrame
对象存储在。通过这种方式,您可以添加与播放机关联的新
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);
}

为了进一步阅读构造GUI,我建议看一看模型-视图-控制器模式。该模式对于组织模型(在您的情况下是玩家)如何与视图(在您的情况下是JFrames)交互非常有用。

玩家数量在游戏中会发生变化还是保持不变?@MDK玩家将根据某些获胜条件被移除。假设我们有5名球员,2名球员得分1,另一名得分3或更高。得分最低的所有人都将被删除。因此,带有1的玩家将被删除,游戏将继续使用这3个玩家,直到ArrayList中只有一个玩家。您可以创建一个JFrames数组,然后在数组上迭代N次,其中N是玩家数,每次实例化一个JFrame。@byxor框架内的按钮如何?我可以在不同的框架中重复使用相同的按钮吗?例如,B1=1到b5=5每帧将有这5个按钮,与帧关联的玩家将单击此按钮并将其设置为自己。我是否必须制作25个不同的按钮,或者我是否可以重用每个帧中的前5个按钮?是否可以重用按钮取决于代码的结构以及程序的工作方式。不幸的是,我们无法为您回答玩家数量会在游戏中改变还是保持不变?@MDK玩家将根据某些获胜条件被移除。假设我们有5名球员,2名球员得分1,另一名得分3或更高。得分最低的所有人都将被删除。因此,带有1的玩家将被删除,游戏将继续使用这3个玩家,直到ArrayList中只有一个玩家。您可以创建一个JFrames数组,然后在数组上迭代N次,其中N是玩家数,每次实例化一个JFrame。@byxor框架内的按钮如何?我可以在不同的框架中重复使用相同的按钮吗?例如,B1=1到b5=5每帧将有这5个按钮,与帧关联的玩家将单击此按钮并将其设置为自己。我是否必须制作25个不同的按钮,或者我是否可以重用每个帧中的前5个按钮?是否可以重用按钮取决于代码的结构以及程序的工作方式。我们不能替你回答不幸的是太感谢你了!我还没有看到散列图,所以我会尝试一下,希望能在路上学习。我希望您不要介意,在我厌倦了这个实现之后,我是否还有其他关于它的问题。再次感谢你!非常感谢你!我还没有看到散列图,所以我会尝试一下,希望能在路上学习。我希望您不要介意,在我厌倦了这个实现之后,我是否还有其他关于它的问题。再次感谢你!
for (JFrame frame : frames.values()) {
    frame.setVisible(true);
}