使用按钮递增GUI中的for循环

时间:2018-05-18 11:49:35

标签: java loops user-interface

我和朋友正在为大学项目制作基于GUI的数学游戏。我们陷入了一个特定的境界。我们在屏幕上显示两个等式,用户可以选择第一个等式是小于,大于还是等于第二个等式。我们希望这发生10次。因此,每当用户选择3个选项中的一个时,必须显示接下来的两个方程式。在第一次迭代中,两个方程式显示,您可以选择答案。完成此操作后,方程式保持不变,您可以无限制地单击3个按钮中的任何一个而不更改方程式或按下10个按钮后循环结束。有三种不同的游戏可供选择,在第一种语句中选择。这两个语句在主GUI方法中运行(声明和创建所有按钮):

calcEquations();
gameCount++;

这些发生在按钮处理程序和计算两个方程的额外方法中。

private class ButtonHandler extends JFrame implements ActionListener
{
    public void actionPerformed(ActionEvent event)
    {
        if(event.getSource() == backButton)
        {
            gameScreenFrame.dispose();
            GameSelectGUI gameSelectGUI = new GameSelectGUI();
            gameSelectGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            gameSelectGUI.setSize(gameScreenFrame.getSize());
            gameSelectGUI.setLocation(gameScreenFrame.getLocation());
            gameSelectGUI.setVisible(true);
        }

        while(gameCount < 10)
        {
            if(event.getSource() == smallButton)
            {
                // gameScreenFrame.dispose();
                // ResultsGUI resultsGUI = new ResultsGUI();
                // resultsGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                // resultsGUI.setSize(gameScreenFrame.getSize());
                // resultsGUI.setLocation(gameScreenFrame.getLocation());
                // resultsGUI.setVisible(true);
                calcEquations();
                gameCount++;

                if(eq1 < eq2)
                {
                    System.out.println("Smaller Correct");
                }
            }

            if(event.getSource() == equalButton)
            {
                // gameScreenFrame.dispose();
                // ResultsGUI resultsGUI = new ResultsGUI();
                // resultsGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                // resultsGUI.setSize(gameScreenFrame.getSize());
                // resultsGUI.setLocation(gameScreenFrame.getLocation());
                // resultsGUI.setVisible(true);

                calcEquations();
                gameCount++;

                if(eq1 == eq2)
                {
                    System.out.println("Equal Correct");
                }
            }

            if(event.getSource() == largeButton)
            {
                // gameScreenFrame.dispose();
                // ResultsGUI resultsGUI = new ResultsGUI();
                // resultsGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                // resultsGUI.setSize(gameScreenFrame.getSize());
                // resultsGUI.setLocation(gameScreenFrame.getLocation());
                // resultsGUI.setVisible(true);

                calcEquations();                    
                gameCount++;

                if(eq1 > eq2)
                {
                    System.out.println("Larger Correct");
                }
            }
        }
    }        
}

public void calcEquations()
{
    if(game == 'A')
    {
        AccuracyGame objGame = new AccuracyGame(gameLvl, gameType);
        eq1 = objGame.Equation();
        eq1Str = objGame.toString();
        eq2 = objGame.Equation();
        eq2Str = objGame.toString();
        eqOneLabel.setText(eq1Str);
        eqTwoLabel.setText(eq2Str);
    }
}

它允许你回答一次,然后它显示一组新的方程式,但此时3个按钮都不起作用。我们在按钮中添加了一个输出,以便在控制台中显示发生的情况,并显示按下按钮一次回答所有10个问题。有没有办法阻止程序一次运行所有10个,并允许我们点击一​​次来回答每组方程?

1 个答案:

答案 0 :(得分:0)

目前,您的calcEquations方法是从while循环调用的,直到gameCount为10.删除while循环以调用仅运行一次。例如:

...
        if(gameCount < 10)
        {
            if(event.getSource() == smallButton)
...