2

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

聊天客户端:

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 地址,如果窗口已经打开(假设我有 AB 和 C 与 D 交谈),我如何确保 C 发送一条消息,将其放置在 C 窗口中?

1.1 我考虑过产生一个新线程,命名线程,然后当有消息进入时将其传递到与名称匹配的线程,但我不知道该怎么做。我以前读过线程的名称,但从未将某些内容传递给特定的线程。

反正有没有下载额外的库更容易做到这一点?

4

1 回答 1

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

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

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

于 2012-07-06T18:02:15.670 回答