检查JFrame是否已打开

Mat*_*ake 2 java swing chat jframe

我正在尝试为我的程序创建一个聊天客户端,我想为每个聊天打开一个新窗口(A&B不会和A&C在同一个窗口中)我有psudocode我正在尝试但不确定如何写它.

聊天客户端:

inputstream.read()
Read who message from
If (chat window arleady open with person from)
{
    Add Message to output section of the window
{
else if (chat window not open)
{
    Open new chat window with person from
    Display message in new chat window
}
Run Code Online (Sandbox Code Playgroud)

要做到这一点,我想到的是将IP存储在一个数组中,然后每当客户端收到消息时,它将通过数组查看是否存储了IP.如果存储,则窗口应该已经打开,否则需要打开窗口.我可以使用来自JFrame的defaultonclose命令对此进行编程,以便在窗口关闭时调用IP的删除,但这是我遇到的问题.

  1. 一旦我在数组中搜索IP地址,如果窗口已经打开(比如说我有AB和C与D对话),如果C发送一条消息说它放在C窗口中,我怎么保险?

1.1我已经考虑过生成一个新线程,命名该线程,然后当一条消息进入时将它传递给与该名称匹配的线程,但我不知道该怎么做.我之前已经读过线程的名称,但从未将某些内容传递给特定的线程.

无论如何在没有下载额外库的情况下更容易做到这一点?

mKo*_*bel 5

  • 不要JFrame用于另一个窗口,因为你不能设置parent v.s.owner,JDialog而是使用

  • 然后JFrame.getOwnedWindows()返回JDialog(s)使用JDialog的所有实例(myFrame所有者)

  • 在所有情况下Window[] allWindows = Window.getWindows();返回从目前的JVM所有情况下,返回的所有实例(J)Frames,(J)Dialogs,(J)Windows或者JOptionsPanes