本质上,我想让我的类 Game 初始化并与实现了 Player 接口的类进行交互。
现在要解决的问题: 当我的 Game 类从此GUI(下面的代码)调用方法 getMove 时,GUI(我)肯定不会决定该动作。 Game 类将很乐意等待该决定,这不是问题。
我正在寻找一种可能会暂停功能的可能性,但是我没有找到任何适合的方法。
我需要的是函数等待JFrame发生动作或将变量设置为正确数量的位置。 GUI必须在此等待时间内正常工作。
我发现了类似的问题
Java : Wait for user input on swing window
Java Swing: Waiting for Mouse Clicked event before returning an Int
Swing GUI doesn't wait for user input
但是我要么对答案不满意,要么无法为我提取有价值的信息,因为答案和询问者一样非常具体。我试图尽我所能来了解Java和OOP,但我还是悄悄地说,还是一个新手。
public class GUI extends javax.swing.JFrame implements Player{
/**
* Creates new form GUI
*/
public GUI() {
initComponents();
}
private void initComponents() {...} //not relevant
// Variables declaration - do not modify - not relevant either
private javax.swing.JButton jButton1;
private javax.swing.JLabel jErrorLabel;
private javax.swing.JTable jTable1;
// End of variables declaration
@Override
public int getMove() {
throw new UnsupportedOperationException("Not supported yet.");
}
}
编辑: 我想知道Java如何处理与非Java应用程序的接口,因此我想像一下播放器和 Game 之间的语言障碍,其中只有 Player 作为接口,因此说。
我知道他暗示着不寻常且效率低下的代码,因为实际上没有语言障碍。对我来说,知识比产品更重要。
答案 0 :(得分:1)
在这种情况下有两个关键概念需要了解和理解(还有更多,但让我们坚持两个最重要的概念):
GUI如何响应事件将严重取决于程序的状态,通常取决于键字段所保存的值,这就是您通常“等待输入”的方式。因此,例如,如果您正在编写纸牌游戏,并且用户按下按钮以获取另一张纸牌,但轮到他了,则GUI会知道轮到谁了(键 状态 ),并向用户回复错误消息而不是卡,因为在错误的时间(GUI处于错误的状态)按下了“给我卡”按钮。 / p>
因此,GUI永远不会进入等待输入的状态,而是随着程序的进行而改变状态。如果将userTurn字段设置为用户的字段,并且他按下“给我卡片”按钮,则游戏会给出一张卡片,然后将其状态更改为到下一个玩家的回合(如果这就是程序逻辑所说的。)
请注意,这些概念不是特定于Swing的,并且几乎可以与任何 GUI库一起使用
还请注意,此逻辑有误:
当我的Game类从此GUI调用方法getMove(下面的代码)
否,游戏实际上甚至不应该呼叫getMove()
,而是