java gui和逻辑

时间:2011-02-20 09:53:02

标签: java user-interface logic

我花了3个小时来理解一件事但没有成功......

问题是:

我有一个班级Gui(一个客户),主要用于游戏。 Gui有一个main,它在一个invokelater中有一个Runnable,其中逻辑(一个管理gamesession的独立类)运行,一些方法来操作卡的顺序。

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                PokerClientGui gui = new PokerClientGui();
                gui.setVisible(true);
                PokerClient pokerClient = new PokerClient(gui);

                pokerClient.gameSession();
            }
        });
}

逻辑是在Gui的主体中创建的,将Gui本身传递给逻辑。 至于我在程序中的程序,没有问题,因为从服务器发送到客户端逻辑的所有对象/字符串都被接收,例如Hand被传递给gui并正确显示。 问题出现了:我想从gui传递给逻辑,被操纵的手通过逻辑类的方法将它发送到服务器。
由于这个函数是由Gui上的事件鼠标调用的(而不是Gui的主要部分),因此我没有逻辑对象的句柄,所以我不能使用它的发送对象方法。  我尝试改变静态发送逻辑的方法,我做静态也是在插座上发送东西的成员......

它没有发送任何东西.....这不是一个错误的问题,我试图捕捉异常(并没有来自他们)

我错了吗?我错过了什么?我应该如何绑定gui和逻辑?

2 个答案:

答案 0 :(得分:1)

也许您可以在Runnable()类中创建一个事件队列,并将其传递给您的gui和客户端构造函数。

客户端将添加要显示的GUI的事件,GUI将添加要供客户端处理的事件。两个队列可能更容易,每个方向一个,而不是在两个方向上重复使用单个通道。

然后,您的GUI和您的客户端会将事件队列从此对象添加到要在事件循环中等待时“检查”的事物列表中。当一个事件来自另一个对象时,它会唤醒当前对象进行处理,就像来自服务器或用户的事件一样。

答案 1 :(得分:1)

代替在主类中创建PokerClientGui的对象,你最好直接在PokerClient对象中创建它的对象并访问它的对象gameSession()。