在我的客户端/服务器Java应用程序中,我发现了一个奇怪的行为,它阻止了任何内容显示在第一个JFrame中(登录一个)。JFrame显示不正确
JFrame中被diplayed,但它是透明的,如果我调整它的大小,我有这样的效果:
该应用程序是这样的(2主,1服务器级和1 Client类:
服务器端 1)主具有一个无限循环,开始一个新的线程,当客户端连接到它来处理消息
客户端 1)主要获得GuiLogin的JDialog的单例,并执行一个方法来显示它
2)当用户按下Login时,guilogin中的ActionListener调用客户端方法来分派LoginRequest对象到服务器,用LoginResponse对象
3)如果电子邮件地址和密码是否正确(电子邮件= A,密码= b)中,它应该显示另一个JFrame的,但无论我尝试,它始终显示窃听 - 透明帧
3b)如果电子邮件和密码不正确,应用程序将显示一个JDialog(工作正常)
我觉得我的错误是什么地方的概念,代码看起来正确的很好,我调用与
guiLogin.dispose();
JFrame j = new JFrame();
j.setVisible(true);
,因为它的工作原理独立代码的新的JFrame,但客户在我的访问者模式的消息处理的方法中,它就像在截图
minified version of the eclipse project, stripped all the class and methods not concerning the bug
编辑:我对Java GUI中&事件非常缺乏经验,我现在检查发现造成问题的代码是EDT(javax.swing.SwingUtilities.isEventDispatchThread内()返回真)。我应该在SwingWorker线程中移动整个消息处理逻辑吗?
它不起作用。 –
该链接还是java项目?你必须同时启动服务器和客户端 – alessiop86
似乎你要么阻止你的美国东部时间,要么你根本不使用它。我必须等到早上才能看到附加的代码,因为我无法在iPAD上查看它:( –