有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在switch语句中删除edit

我正在创建一个扑克赔率计算器,我有8名玩家在一张桌子周围设置了一个JComboBox,其中包含选定数量的玩家。我希望做的是在我做出多个选择之后“重新绘制”GUI。例如,如果单击4个玩家,则4个玩家将变为可编辑。这目前有效,但当我选择3名球员后,球员4仍然是可编辑的

我尝试过设置可见性,我尝试过移除玩家窗格,我尝试过移除(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行,但我相信这就是问题所在。我的目标是让玩家窗格在选中时可编辑,而在未选中时不可编辑

https://imgur.com/a/ssgXSXW? 我希望这是有道理的


共 (1) 个答案

  1. # 1 楼答案

    希望这种适应将有助于解决您的问题。基本上,你每次更改计数器时都会添加一些玩家,每次更改时都会重新添加他们,例如,当选择一个玩家时,你会生成一个玩家。然后当两个玩家被选中时,你会再次产生玩家1和玩家2。也许加入某种类型的检查,这样你就不会再次创建相同的玩家了,这样你就不必在每次添加玩家时都清除他们,尽管这只是一个小想法

    有了这个建议,我们的目标是基本上比较当前的玩家数量和以前的玩家数量。如果我们要增加更多的玩家或保持不变,继续正常操作并更新我们的变量。但是,如果我们删除一个或多个玩家,请在重新绘制之前删除当前玩家数量和目标玩家数量之间的玩家

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

    在没有代码的情况下,我无法测试它,但我希望我的头脑风暴能有所帮助,或者它能激发你自己或其他人的一些想法:)希望它也能实现。如果有人知道更好的方法,我也会洗耳恭听,急切地想知道我哪里出了问题!:)

    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;
        }
    
    });