如何在两个单独的类实例(JFrame窗口)中显示相同的JTextField输入?

时间:2017-11-05 20:36:13

标签: java swing

我的教授告诉我,我们必须使用java swing制作聊天系统。现在他在课前做了一个,看起来很简单,没什么特别的。没有服务器。 在他的主要功能中,我有足够的时间写出看似非常简单的东西:

     ChatFrame Rick = new ChatFrame("Rick");
     ChatFrame Morty = new ChatFrame("Morty");

     Rick.receiver = Morty;
     Morty.receiver = Rick;

当他运行程序时,会弹出2个窗口,每个窗口都可以输入,如果你在“Ricks”窗口输入一条消息并按下发送,它会在两个窗口中弹出。当然,在Rick的窗口中,它显示为:

Me: (message sent)

在Morty的窗口中显示为:

Rick: (message sent)

我只是希望得到一些关于如何完成这项工作的指导......我无法找到关于如何将这两个窗口联系在一起工作的线索。如果有人能指导我朝着正确的方向前进,我真的很感激! 谢谢!

目前,我已经做到了这一点,我可以与自己聊天,我不知道如何将窗户连接在一起。

目前我有两个类,一个是我创建窗口的,另一个是主类。

主要课程:

import javax.swing.JFrame;

 public class serverDriver 
 {
     public static void main(String[] args) 
     {
         chatFrame alec = new chatFrame("Alec");
         chatFrame you = new chatFrame("You");

         alec.receiver = you;
         you.receiver = alec;
    }
}

其他课程:

    public class chatFrame extends JFrame 
    {
        private JButton sendB = new JButton("Send");
        private JTextField areaI;
        private JTextArea areaO = new JTextArea();
        private String user;
        public chatFrame receiver;

        public chatFrame(String name)
        {
            // Used to display name of the person sending code
            user = name;

            // Make and add text field for input, area for output, and button
            areaI = new JTextField(25);
            areaI.setBounds(35, 350, 350, 80);
            areaI.setFont(new Font("Comic Sans", Font.BOLD, 15));

            areaO.setBounds(35, 25, 350, 300);
            areaO.setFont(new Font("Comic Sans", Font.BOLD, 15));
            areaO.setEditable(false);
            areaO.setLineWrap(true);
            areaO.setWrapStyleWord(true);

            sendB.setBounds(390, 350, 88, 80);

            add(areaI); 
            add(sendB);
            add(areaO);

            // Set the dimensions of the frame, and make it visible
            setSize(500,500);  
            setLayout(null);  
            setVisible(true); 
            setTitle(name);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            theHandler handler = new theHandler();
            areaI.addActionListener(handler);
            sendB.addActionListener(handler);

        }
        private class theHandler implements ActionListener
        {
            public void actionPerformed(ActionEvent event)
            {
                 // Source where it happens, if event happens in each field such as click or enter
                if(event.getSource() == areaI || event.getSource() == sendB)
                {
                    // This will make the area receive the input
                    areaO.append(user + ": " + areaI.getText() + "\n");
                    // This will clear out the text field.
                    areaI.setText("");
                }
            }
        }
    }

我真的很困惑如何制作它以便我可以查看我在两个窗口上发送的消息...任何指导都将不胜感激!

0 个答案:

没有答案