Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javagui与逻辑_Java_User Interface_Logic - Fatal编程技术网

javagui与逻辑

javagui与逻辑,java,user-interface,logic,Java,User Interface,Logic,我花了三个小时试图理解一件事,但没有成功 问题是: 我有一个类Gui(一个客户端),带有一个用于纸牌游戏的main。Gui有一个main,在调用器中有一个Runnable,逻辑(管理gamesession的一个单独的类)在其中运行,还有一些方法来操作卡的顺序 public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public vo

我花了三个小时试图理解一件事,但没有成功

问题是:

我有一个类Gui(一个客户端),带有一个用于纸牌游戏的main。Gui有一个main,在调用器中有一个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本身传递给逻辑。 就我在程序中处理而言,没有问题,因为从服务器发送到客户机逻辑的所有对象/字符串都被接收,例如,手被传递到gui并正确显示。 现在问题来了:我想从gui传递到逻辑,通过logic类的方法将其发送到服务器 因为这个函数是由Gui上的事件鼠标调用的(而不是在Gui的主要部分),所以我没有逻辑对象的句柄,所以我不能使用它的sending objects方法。 我尝试将发送的逻辑方法更改为static,我还对参与在套接字上发送内容的成员进行了static

它不发送任何东西。。。。。这不是什么错误的问题,我尝试捕捉异常(但没有任何异常)


我错在哪里?我错过了什么?如何绑定gui和逻辑?

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

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


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

在主类u中创建PokerClientGui的对象时,最好直接在PokerClient对象中创建其对象并访问其对象gameSession().

hmmm但这并不能改变问题……我仍然需要从gui与逻辑通信,并且gui看不到逻辑对象。就像我所做的那样,将gui传递给logicu也是正确的。。。。然后我可以创建gui,将逻辑传递给它(这样我就可以直接在gui中调用逻辑的方法),我想我可以给我们一个事件队列,因为我可以毫无问题地从逻辑到gui进行通信……但是我(初学者)不知道如何做。。。我大体上理解了这个概念,通过它我可以唤醒逻辑中的循环。。。。但是你的意思是用java.awt.EventQueue.invokeLater(new runnable()???…)创建一个Tehr runnable吗(我正在网上寻找更多信息,但直到现在还没有成功)@用户595983,我在想一件简单得多的事情:哦-uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu!!