gpt4 book ai didi

java - 删除 switch 语句中的编辑

转载 作者:行者123 更新时间:2023-12-02 05:59:18 25 4
gpt4 key购买 nike

我正在创建一个扑克赔率计算器,我将 8 名玩家围坐在一张 table 周围,并使用 JComboBox 和选定的玩家数量。我想做的是在做出多个选择后“重新绘制”GUI。例如,如果我单击 4 个玩家,则 4 个玩家变为可编辑。这目前有效,但当我选择 3 个玩家后,玩家 4 仍然可以编辑。

我尝试设置可见性,我厌倦了删除播放器 Pane ,我尝试删除(addPlayer4),我尝试了其他一些奇怪的事情,但我能得到的最接近的是完全删除播放器。

addPlayer1.addActionListener((ActionEvent e) -> {
player1.removeAll();
player1.add(playerPanelFactory("Player1",1));
//welcomeScreen.get
repaint();
validate();
});
addPlayer2.addActionListener((ActionEvent e) -> {
player2.removeAll();
player2.add(playerPanelFactory("Player2",2));
getParent().repaint();
// contentPane.repaint();
validate();
});
addPlayer3.addActionListener((ActionEvent e) -> {
player3.removeAll();
player3.add(playerPanelFactory("Player3",3));
getParent().repaint();
// contentPane.repaint();
validate();
});
addPlayer4.addActionListener((ActionEvent e) -> {
player4.removeAll();
player4.add(playerPanelFactory("Player4",4));
repaint();
validate();
});

......

playerBox.addActionListener((ActionEvent e)-> {
numberOfPlayers = playerBox.getSelectedItem().toString();
int numPlayers = Integer.parseInt(numberOfPlayers);
switch(numPlayers){
case 1:
addPlayer1.doClick();
break;
case 2:
addPlayer1.doClick();
addPlayer2.doClick();
break;
case 3:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
break;
case 4:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
addPlayer4.doClick();
break;
case 5:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
addPlayer4.doClick();
addPlayer5.doClick();
break;
case 6:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
addPlayer4.doClick();
addPlayer5.doClick();
addPlayer6.doClick();
break;
case 7:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
addPlayer4.doClick();
addPlayer5.doClick();
addPlayer6.doClick();
addPlayer7.doClick();
break;
case 8:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
addPlayer4.doClick();
addPlayer5.doClick();
addPlayer6.doClick();
addPlayer7.doClick();
addPlayer8.doClick();

break;
default:
return;
}
});

我不想链接所有代码,因为它几乎有 700 行,但我相信这可能是问题所在。我希望获得的目标是让玩家 Pane 在被选择时可编辑,而在未选择时不可编辑。

/image/sLMUZ.jpg ?我希望这是有道理的

最佳答案

希望此调整能够帮助解决您的问题。本质上,每次更改计数器时都会添加一些玩家,并在每次更改时重新添加它们,例如当选择 1 个玩家时,您会生成玩家 1。然后,当选择两个玩家时,您会再次生成玩家 1 和玩家 2。也许添加某种检查,以便您不会再次重新创建相同的玩家很好,那么你就不必每次添加玩家时都清除它们,尽管只是一个小小的想法。

这个建议的目的是基本上将当前玩家数量与之前的数量进行比较。如果我们添加更多玩家或保持不变,请照常继续并更新我们的变量。但是,如果我们要删除一名或多名玩家,请在重新抽签之前删除当前玩家人数与目标玩家人数之间的玩家。

示例:从 7 名玩家增加到 5 名玩家。因此我们要删除新的玩家数量 (5) + 1,即玩家 6。然后循环并删除最后一个玩家,即玩家 7。然后重画。

我无法在没有代码的情况下测试它,但我希望我的头脑 Storm 能有所帮助,或者它能激发你自己或其他人的一些想法:)希望它也是可以实现的。如果有人知道更好的方法来做到这一点,我也会洗耳恭听,渴望了解我可能出错的地方! :)

int lastNumPlayers;

/*
* SOME CODE
*/

playerBox.addActionListener((ActionEvent e)-> {
numberOfPlayers = playerBox.getSelectedItem().toString();
int numPlayers = Integer.parseInt(numberOfPlayers);

if(numPlayers >= lastNumPlayers) {
switch(numPlayers){
case 1:
addPlayer1.doClick();
break;
case 2:
addPlayer1.doClick();
addPlayer2.doClick();
break;
case 3:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
break;
case 4:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
addPlayer4.doClick();
break;
case 5:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
addPlayer4.doClick();
addPlayer5.doClick();
break;
case 6:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
addPlayer4.doClick();
addPlayer5.doClick();
addPlayer6.doClick();
break;
case 7:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
addPlayer4.doClick();
addPlayer5.doClick();
addPlayer6.doClick();
addPlayer7.doClick();
break;
case 8:
addPlayer1.doClick();
addPlayer2.doClick();
addPlayer3.doClick();
addPlayer4.doClick();
addPlayer5.doClick();
addPlayer6.doClick();
addPlayer7.doClick();
addPlayer8.doClick();

break;
default:
return;
}

lastNumPlayers = numPlayers;
} else {
//Loop through all players between the last number and the new number
for(int i = numPlayers + 1; i <= lastNumPlayers; i++) {
switch(i) {
//Lowest number of players is 1, so lowest check is at 2 (1+1 = 2)
case 2:
player2.removeAll();
break;
case 3:
player3.removeAll();
break;
case 4:
player4.removeAll();
break;
case 5:
player5.removeAll();
break;
case 6:
player6.removeAll();
break;
case 7:
player7.removeAll();
break;
case 8:
player8.removeAll();
}
}

//After removing unused players, redraw screen
repaint();
lastNumPlayers = numPlayers;
}

});

关于java - 删除 switch 语句中的编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55988315/

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