如何让GUI等待用户输入



我是一个相当基本的程序员谁被分配使GUI程序没有任何先前的经验与创建GUI。使用NetBeans,我设法设计了我认为GUI应该是什么样子的,以及按下某些按钮时应该做什么,但是主程序在继续之前不会等待用户输入。我的问题是,如何让这个程序等待输入?

    public class UnoMain {
    public static void main(String args[]) {
        UnoGUI form = new UnoGUI(); // GUI class instance
        // NetBeans allowed me to design some dialog boxes alongside the main JFrame, so
        form.gameSetupDialog.setVisible(true); // This is how I'm trying to use a dialog box
        /* Right around here is the first part of the problem.
         * I don't know how to make the program wait for the dialog to complete.
         * It should wait for a submission by a button named playerCountButton.
         * After the dialog is complete it's supposed to hide too but it doesn't do that either. */
        Uno Game = new Uno(form.Players); // Game instance is started
        form.setVisible(true); // Main GUI made visible
        boolean beingPlayed = true; // Variable dictating if player still wishes to play.
        form.playerCountLabel.setText("Players: " + Game.Players.size()); // A GUI label reflects the number of players input by the user in the dialog box.
        while (beingPlayed) {
            if (!Game.getCompleted()) // While the game runs, two general functions are repeatedly called.
            {
                Player activePlayer = Game.Players.get(Game.getWhoseTurn());
                // There are CPU players, which do their thing automatically...
                Game.Turn(activePlayer);
                // And human players which require input before continuing.
                /* Second part of the problem:
                 * if activePlayer's strategy == manual/human
                 *   wait for GUI input from either a button named 
                 *   playButton or a button named passButton */
                Game.advanceTurn();
                // GUI updating code //
            }
        }
    }
}

我花了大约三天的时间来弄清楚如何集成我的代码和GUI,所以如果有人能告诉我如何使这一件事工作,我会很感激。如果你还需要其他信息来帮助我,请问我。

编辑:基本上,教授让我们制作一个带有GUI的Uno游戏。游戏中可以有电脑和人类玩家,玩家的数量由玩家在游戏开始时决定。我一开始基于主机编写了所有内容,以确保游戏核心能够运行,并尝试着设计GUI;目前,这个GUI只在游戏运行时显示有关游戏的信息,但我不确定如何让代码等待并接收来自GUI的输入,而不让程序提前收费。我已经调查了其他StackOverflow问题,比如这个,这个,这个,或者这个,但我不明白如何将答案应用到我自己的代码中。如果可能的话,我想一个答案类似于在链接的答案(与代码的答案,我可以检查和/或使用)。如果我听起来要求很高,没有受过教育,令人困惑,我道歉;我已经在这个项目上努力工作了几个星期了,现在明天就要交了,我一直很紧张,因为在我解决这个问题之前我不能前进。

TL;DR -如何让主程序等待并侦听按钮单击事件?我应该使用模态对话框,还是有其他的方法来做到这一点?在这两种情况下,需要修改哪些代码来实现它?

与基于主机的编程不同,它通常具有良好定义的执行路径,GUI应用在事件驱动的环境中运行。事件从外部进入,你对它们做出反应。可能会发生许多类型的事件,但通常,我们感兴趣的是那些由用户通过鼠标点击和键盘输入产生的事件。

这改变了GUI应用程序的工作方式。

例如,你需要摆脱你的while循环,因为这在GUI环境中是非常危险的事情,因为它通常会"冻结"应用程序,使它看起来像你的应用程序挂起了(实际上是挂起了)。

相反,你应该在你的UI控件上提供一系列的监听器来响应用户输入并更新某种模型,这可能会影响你UI上的其他控件。

为了回答你的问题,你不用(等待用户输入),应用程序已经在等待了,但是你通过侦听器捕获输入并根据需要对它们进行操作

相关内容

  • 没有找到相关文章

最新更新