我正在尝试为我的程序创建一个聊天客户端,我想为每个聊天打开一个新窗口(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.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)Windows
或JOptionsPanes
的所有实例