点击一定次数后如何禁用按钮?

时间:2018-03-18 16:16:37

标签: java swing jbutton

我正在制作类似于“谁想成为百万富翁”的游戏?我有一个'下一步'按钮,让玩家接下来的问题。但是,由于我允许最多四个玩家玩,我希望在最多3次点击后禁用此“下一步”按钮(或者如果有一个/两个/三个玩家玩,则更少)。

到目前为止,我的代码是“下一步”按钮:

nextButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            StatusPage.setVisible(false);
            QuestionPage.setVisible(true);
            option1.setEnabled(true);
            option2.setEnabled(true);
            option3.setEnabled(true);
            option4.setEnabled(true);

            if (Player2JButton.isEnabled()){
                counter = 1;
            }
            else if (Player3JButton.isEnabled()){
                counter = 2;
            }
            else if (Player4JButton.isEnabled()){
                counter = 3;
            }
            else {
                System.out.println("Error getting next question.");
            }

            if (generalKnowledge.isEnabled()){

                currentQuest = quest.setQnA(option1, option2, option3, option4, question1, "generalKnowledge");
            }
            else if (geography.isEnabled()){

                currentQuest = quest.setQnA(option1, option2, option3, option4, question1, "geography");
            }
            else if (hipHopMusic.isEnabled()){

                currentQuest = quest.setQnA(option1, option2, option3, option4, question1, "hipHopMusic");
            }
            else {
                System.out.println("Error getting next question.");
            }
        }
    });

2 个答案:

答案 0 :(得分:0)

您是否考虑过使用一个简单的int变量来计算其中一个玩家按下该按钮的次数?

您如何看待这个:

    final int NUMBER_OF_PLAYERS=4;
    int count=0;



     nextButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                count++; 
                if(count-1==NUMBER_OF_PLAYERS) 
                  {
                  nextButton.setEnabled(false);  //disable the button
                  }

              ///Your code

            }
        });

答案 1 :(得分:0)

我想我会把它添加为答案。这是一个工作样本,没有一些Android-yitter。

我们将使用int counter。每次有人点击你在actionPerformed - 块内增加计数器。如果counter大于2,则会点击3次。我们将nextButton停用#setEnabled

public class ButtonCycle extends JPanel implements ActionListener {
    private int counter = 0;
    private JButton btn;

    public ButtonCycle() {
        this.btn = new JButton("Next");
        this.btn.addActionListener(this);

        add(this.btn);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new JFrame("Button cycling through animations");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setPreferredSize(new Dimension(250,250));
                f.setContentPane(new ButtonCycle());
                f.pack();
                f.setLocationRelativeTo(null);
                f.setVisible(true);
            }
        });
    }

    @Override
    public void actionPerformed(ActionEvent a) {
        switch(this.counter) {
            case 0:
            case 1:
                this.counter++;
                break;
            case 2:
                ((JButton) a.getSource()).setEnabled(false);
                // or like this
                this.btn.setEnabled(false);
                break;
        }
    }
}

应该给你你需要的东西。