检查JFrame是否已打开

时间:2012-07-06 17:49:21

标签: java swing jframe chat

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

聊天客户端:

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
}

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

  1. 一旦我在数组中搜索IP地址,如果窗口已经打开(比如说我有A B和C与D对话),如果C发送一条消息说它放在C窗口中,我怎么保险?
  2. 1.1我已经考虑过生成一个新线程,命名该线程,然后当一条消息进入时将它传递给与该名称匹配的线程,但我不知道该怎么做。我之前已经阅读了线程的名称,但从未将某些内容传递给特定的线程。

    如果没有下载额外的库,有没有更容易做到这一点?

1 个答案:

答案 0 :(得分:5)

  • 不要将JFrame用于其他窗口,因为您无法设置parent v.s.owner,而是使用JDialog

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

  • 在所有情况下Window[] allWindows = Window.getWindows();都返回当前JVM中的所有实例,返回(J)Frames(J)Dialogs(J)WindowsJOptionsPanes的所有实例