广告
返回顶部
首页 > 资讯 > 精选 >Java如何实现聊天室界面
  • 440
分享到

Java如何实现聊天室界面

2023-06-30 15:06:46 440人浏览 安东尼
摘要

这篇“Java如何实现聊天室界面”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现聊天室界面”文章吧。服务器端:

这篇“Java如何实现聊天室界面”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现聊天室界面”文章吧。

服务器端:

package Server; import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.ArrayList;import java.util.List; import javax.swing.BorderFactory;import javax.swing.JFrame;import javax.swing.JButton;import javax.swing.JOptionPane;import javax.swing.jscrollPane;import javax.swing.JTextArea;import javax.swing.JList;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException; public class ServerFrame extends JFrame implements ActionListener {     private JButton jbt_start;    private JButton jbt_stop;    private JButton jbt_exit;    private JTextArea jta_disMess;    private JList jlt_disUsers;     private Server server;     public List<String> online_usernames;    public List<Integer> online_usernameids;     public ServerFrame(Server server) {        this.server = server;        online_usernames = new ArrayList<String>();        online_usernameids = new ArrayList<Integer>();        try {            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (InstantiationException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        } catch (UnsupportedLookAndFeelException e) {            e.printStackTrace();        }        setTitle("\u670D\u52A1\u5668");        setIconImage(Toolkit.getDefaultToolkit().getImage("Images/Socket.jpg"));        setSize(449, 301);        setResizable(false);        WinCenter.center(this);        addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent arg0) {                jbt_exit.doClick();            }        });        getContentPane().setLayout(null);         jbt_start = new JButton("\u542F\u52A8\u670D\u52A1\u5668");        jbt_start.setBounds(32, 23, 103, 34);        jbt_start.addActionListener(this);        getContentPane().add(jbt_start);         jbt_stop = new JButton("\u505C\u6B62\u670D\u52A1\u5668");        jbt_stop.setBounds(145, 23, 103, 34);        jbt_stop.setEnabled(false);        jbt_stop.addActionListener(this);        getContentPane().add(jbt_stop);         jbt_exit = new JButton("\u9000\u51FA\u670D\u52A1\u5668");        jbt_exit.setBounds(258, 23, 103, 34);        jbt_exit.addActionListener(this);        getContentPane().add(jbt_exit);         JScrollPane scrollPane = new JScrollPane();        scrollPane.setBounds(10, 64, 221, 192);        scrollPane.setWheelScrollingEnabled(true);        scrollPane.setBorder(BorderFactory.createTitledBorder("聊天消息"));        getContentPane().add(scrollPane);         jta_disMess = new JTextArea();        scrollPane.setViewportView(jta_disMess);         JScrollPane scrollPane_1 = new JScrollPane();        scrollPane_1.setBounds(258, 65, 157, 191);        scrollPane_1.setBorder(BorderFactory.createTitledBorder("在线用户"));        getContentPane().add(scrollPane_1);         jlt_disUsers = new JList();        jlt_disUsers.setVisibleRowCount(4);        scrollPane_1.setViewportView(jlt_disUsers);    }         private static final long serialVersionUID = 1L;     @Override    public void actionPerfORMed(ActionEvent arg0) {        if (arg0.getSource() == jbt_start) {            jbt_start.setEnabled(false);            jbt_stop.setEnabled(true);            server.startServer();        }        if (arg0.getSource() == jbt_stop) {            int flag = JOptionPane.showConfirmDialog(this, "是否要停止服务器?", "",                    JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);            if (flag == JOptionPane.OK_OPTION) {                server.stopServer();                jbt_start.setEnabled(true);                jbt_stop.setEnabled(false);            }        }        if (arg0.getSource() == jbt_exit) {            if (jbt_stop.isEnabled()) {                jbt_stop.doClick();            }            server.close();        }    }     public void setDisUsers(String userNames) {        if (userNames.equals("@userlist")) {            jlt_disUsers.removeAll();            String[] user_null = new String[]{};            jlt_disUsers.setListData(user_null);        } else {            if (userNames.contains("@userlist")) {                String[] dis = userNames.split("@userlist");                String[] disUsernames = new String[dis.length / 2];                int j = 0;                for (int i = 0; i < dis.length; i++) {                    disUsernames[j++] = dis[i++];                }                jlt_disUsers.removeAll();                jlt_disUsers.setListData(disUsernames);            }            if (userNames.contains("@exit")) {                String[] dis = {};                jlt_disUsers.setListData(dis);            }        }    }     public void setDisMess(String message) {        if (message.contains("@chat")) {            int local = message.indexOf("@chat");            jta_disMess.append(message.substring(0, local) + "\n");            jta_disMess.setCaretPosition(jta_disMess.getText().length());        }        if (message.contains("@exit")) {            jta_disMess.setText("");        }    }     public void setStartAndStopUnable() {        JOptionPane.showMessageDialog(this, "不能同时开启两个服务器");        jbt_start.setEnabled(false);        jbt_stop.setEnabled(false);    }}

设置窗口居中代码:

package Server; import java.awt.Dimension;import java.awt.Toolkit;import java.awt.Window; public class WinCenter {    public static void center(Window win) {        Toolkit tkit = Toolkit.getDefaultToolkit();        Dimension sSize = tkit.getScreenSize();        Dimension wSize = win.getSize();        if (wSize.height > sSize.height) {            wSize.height = sSize.height;        }        if (wSize.width > sSize.width) {            wSize.width = sSize.width;        }        win.setLocation((sSize.width - wSize.width) / 2, (sSize.height - wSize.height) / 2);    }}

客户端:

登录界面

package Client; import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException; import java.awt.Font;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.net.Inet4Address;import java.net.UnknownHostException; import javax.swing.JTextField;import javax.swing.JButton; public class Client_enterFrame extends JFrame implements ActionListener, KeyListener {    public Client_enterFrame(Client client) {        this.client = client;        try {            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());        } catch (ClassNotFoundException e1) {            e1.printStackTrace();        } catch (InstantiationException e1) {            e1.printStackTrace();        } catch (IllegalAccessException e1) {            e1.printStackTrace();        } catch (UnsupportedLookAndFeelException e1) {            e1.printStackTrace();        }        setIconImage(Toolkit.getDefaultToolkit().getImage("Images/socket.jpg"));        setTitle("\u804A\u5929\u5BA4");        getContentPane().setLayout(null);        setSize(296, 249);        WinCenter.center(this);        setResizable(false);        addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {                jbt_exit.doClick();            }        });         JLabel lblNewLabel = new JLabel("\u7528\u6237\u540D");        lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 14));        lblNewLabel.setBounds(23, 30, 81, 34);        getContentPane().add(lblNewLabel);         jtf_username = new JTextField();        jtf_username.addKeyListener(this);        jtf_username.setBounds(114, 30, 143, 34);        getContentPane().add(jtf_username);        jtf_username.setColumns(10);         JLabel lblNewLabel_1 = new JLabel("\u670D\u52A1\u5668\u5730\u5740");        lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 14));        lblNewLabel_1.setBounds(23, 74, 81, 34);        getContentPane().add(lblNewLabel_1);         jtf_hostIp = new JTextField();        jtf_hostIp.setBounds(114, 74, 143, 34);        jtf_hostIp.addKeyListener(this);        getContentPane().add(jtf_hostIp);        try {            String ip = (String) Inet4Address.getLocalHost().getHostAddress();            jtf_hostIp.setText(ip);        } catch (UnknownHostException e) {            e.printStackTrace();        }        jtf_hostIp.setColumns(10);         JLabel lblNewLabel_2 = new JLabel("\u7AEF\u53E3\u53F7");        lblNewLabel_2.setFont(new Font("宋体", Font.PLAIN, 14));        lblNewLabel_2.setBounds(23, 118, 81, 34);        getContentPane().add(lblNewLabel_2);         jtf_hostPort = new JTextField();        jtf_hostPort.addKeyListener(this);        jtf_hostPort.setBounds(114, 118, 143, 34);        getContentPane().add(jtf_hostPort);        jtf_hostPort.setText("5000");        jtf_hostPort.setColumns(10);         jbt_enter = new JButton("\u8FDB\u5165\u804A\u5929\u5BA4");        jbt_enter.addActionListener(this);        jbt_enter.addKeyListener(this);        jbt_enter.setFont(new Font("宋体", Font.PLAIN, 14));        jbt_enter.setBounds(23, 162, 108, 39);        getContentPane().add(jbt_enter);         jbt_exit = new JButton("\u9000\u51FA\u804A\u5929\u5BA4");        jbt_exit.setFont(new Font("宋体", Font.PLAIN, 14));        jbt_exit.setBounds(144, 162, 113, 39);        jbt_exit.addActionListener(this);        getContentPane().add(jbt_exit);    }         private static final long serialVersionUID = 1L;    private JTextField jtf_username;    private JTextField jtf_hostIp;    private JTextField jtf_hostPort;    private JButton jbt_enter;    private JButton jbt_exit;    private Client client;      @Override    public void actionPerformed(ActionEvent e) {        if (e.getSource() == jbt_exit) {            setVisible(false);            client.exitLogin();        }        if (e.getSource() == jbt_enter) {            String username = jtf_username.getText();            username.trim();            String hostIp = jtf_hostIp.getText();            hostIp.trim();            String hostPort = jtf_hostPort.getText();            hostPort.trim();            if (!username.equals("")) {                if (!hostIp.equals("")) {                    if (!hostPort.equals("")) {                        String login_mess = client.login(username, hostIp, hostPort);                        if (login_mess.equals("true")) {                            this.setVisible(false);                            client.showChatFrame(username);                        } else {                            JOptionPane.showMessageDialog(this, login_mess);                        }                    } else {                        JOptionPane.showMessageDialog(this, "服务器连接端口号不能为空!");                    }                } else {                    JOptionPane.showMessageDialog(this, "服务器地址不能为空!");                }            } else {                JOptionPane.showMessageDialog(this, "用户名不能为空!");            }        }    }     @Override    public void keyPressed(KeyEvent arg0) {        if (arg0.geTKEyCode() == KeyEvent.VK_ENTER) {            jbt_enter.doClick();        }    }     @Override    public void keyReleased(KeyEvent arg0) {    }     @Override    public void keyTyped(KeyEvent arg0) {    }}

聊天主界面

package Client; import java.awt.Font;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.ArrayList;import java.util.List; import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JList;import javax.swing.JOptionPane;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.ListModel;import javax.swing.ListSelectionModel;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener; public class Client_chatFrame extends JFrame implements ActionListener,        KeyListener, ListSelectionListener {    public Client_chatFrame(Client client, String title) {        this.client = client;        try {            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (InstantiationException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        } catch (UnsupportedLookAndFeelException e) {            e.printStackTrace();        }        setIconImage(Toolkit.getDefaultToolkit().getImage("Images/socket.jpg"));        setTitle("\u804A\u5929\u5BA4" + "  " + title);        setSize(450, 325);        WinCenter.center(this);        setResizable(false);        addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent arg0) {                jbt_exit.doClick();            }        });        getContentPane().setLayout(null);         JScrollPane scrollPane = new JScrollPane();        scrollPane.setBorder(BorderFactory.createTitledBorder("聊天消息"));        scrollPane.setBounds(10, 10, 283, 167);        scrollPane.setWheelScrollingEnabled(true);        getContentPane().add(scrollPane);         jta_disMess = new JTextArea();        jta_disMess.setEditable(false);        scrollPane.setViewportView(jta_disMess);         jtf_inputMess = new JTextField();        jtf_inputMess.addKeyListener(this);        jtf_inputMess.setBounds(10, 242, 192, 32);        getContentPane().add(jtf_inputMess);        jtf_inputMess.setColumns(10);         jbt_trans = new JButton("\u53D1  \u9001");        jbt_trans.setFont(new Font("宋体", Font.PLAIN, 14));        jbt_trans.setBounds(212, 241, 93, 32);        jbt_trans.addActionListener(this);        getContentPane().add(jbt_trans);         jbt_clear = new JButton("\u6E05\u9664\u804A\u5929\u8BB0\u5F55");        jbt_clear.setFont(new Font("宋体", Font.PLAIN, 14));        jbt_clear.setBounds(158, 187, 135, 37);        jbt_clear.addActionListener(this);        getContentPane().add(jbt_clear);         jbt_exit = new JButton("\u9000\u51FA\u804A\u5929\u5BA4");        jbt_exit.setFont(new Font("宋体", Font.PLAIN, 14));        jbt_exit.setBounds(20, 189, 128, 37);        jbt_exit.addActionListener(this);        getContentPane().add(jbt_exit);         scrollPane_1 = new JScrollPane();        scrollPane_1.setBorder(BorderFactory.createTitledBorder("在线用户"));        scrollPane_1.setBounds(303, 10, 128, 214);        getContentPane().add(scrollPane_1);         jlt_disUsers = new JList();        jlt_disUsers.setVisibleRowCount(4);        jlt_disUsers.setSelectedIndex(0);        jlt_disUsers                .setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);        jlt_disUsers.addListSelectionListener(this);        scrollPane_1.setViewportView(jlt_disUsers);         jbt_singlChat = new JButton("\u5355\u4EBA\u804A\u5929");        jbt_singlChat.setBounds(315, 241, 116, 32);        jbt_singlChat.addActionListener(this);        getContentPane().add(jbt_singlChat);    }         private static final long serialVersionUID = 1L;    private JTextField jtf_inputMess;    private JTextArea jta_disMess;    private JButton jbt_trans;    private JButton jbt_clear;    private JButton jbt_exit;    private JList jlt_disUsers;    private JButton jbt_singlChat;    private JScrollPane scrollPane_1;    private Client client;     @Override    public void actionPerformed(ActionEvent e) {        if (e.getSource() == jbt_clear) {            jta_disMess.setText("");        }        if (e.getSource() == jbt_trans) {            String mess = jtf_inputMess.getText();            mess.trim();            jtf_inputMess.setText("");            if (mess.equals("")) {                JOptionPane.showMessageDialog(this, "不能发送空消息");                jtf_inputMess.setText("");            } else {                client.transMess(mess);            }        }        if (e.getSource() == jbt_exit) {            if (JOptionPane.OK_OPTION == JOptionPane.showConfirmDialog(this,                    "是否确定要退出聊天室?", "提示", JOptionPane.OK_CANCEL_OPTION)) {                this.setVisible(false);                client.exitChat();                System.exit(0);            }        }        if (e.getSource() == jbt_singlChat) {            String user_names = (String) jlt_disUsers.getSelectedValue();            if (user_names == null) {                JOptionPane.showMessageDialog(this, "您未选择聊天对象\n请选择要单独聊天的对象");            } else {                if (!client.c_singleFrames.containsKey(user_names)) {                    createSingleChatFrame(user_names);                } else {                    client.c_singleFrames.get(user_names)                            .setFocusablewindowstate(true);                }            }        }    }     @Override    public void keyPressed(KeyEvent arg0) {        if (arg0.getKeyCode() == KeyEvent.VK_ENTER) {            if (arg0.getSource() == jtf_inputMess) {                jbt_trans.doClick();            }        }    }     @Override    public void keyReleased(KeyEvent arg0) {    }     @Override    public void keyTyped(KeyEvent arg0) {    }     public void setDisMess(String substring) {        int local = substring.indexOf("@chat");        jta_disMess.append(substring.substring(0, local) + "\n");        jta_disMess.setCaretPosition(jta_disMess.getText().length());    }     public void setDisUsers(String chat_re) {        String[] infos = chat_re.split("@userlist");        String[] info = new String[infos.length / 2];        for (int i = 1; i < infos.length; i++) {            int id_user = 0;            try {                id_user = Integer.parseInt(infos[i]);                if (client.getThreadID() == id_user) {                    if (!client.username.equals(infos[i - 1])) {                        JOptionPane.showMessageDialog(this,                                "由于有同名的用户登录,所以您的用户名后面加上了编号");                        client.username = infos[i - 1];                        this.setTitle("聊天室    " + client.username);                        break;                    } else {                        break;                    }                } else {                    i++;                }            } catch (Exception e) {            }        }        if (infos.length == 2) {            String[] s = new String[]{};            if (!client.c_singleFrames.isEmpty()) {                ListModel list = jlt_disUsers.getModel();                for (int i = 0; i < list.getSize(); i++) {                    if (client.c_singleFrames.get(list.getElementAt(i)) != null) {                        client.c_singleFrames.get(list.getElementAt(i))                                .setExitNotify();                    }                }            }            jlt_disUsers.removeAll();            jlt_disUsers.setListData(s);        } else {            if ((infos.length / 2 - 1) < client.username_online.size()) {                // 有人下线                List<String> rec = new ArrayList<String>();                int i = 0;                for (; i < infos.length; i++) {                    rec.add(0, infos[i++]);                }                for (i = 0; i < client.username_online.size(); i++) {                    if (!rec.contains(client.username_online.get(i))) {                        break;                    }                }                String name = client.username_online.get(i);                client.username_online.remove(i);                try {                    client.clientuserid.remove(i);                } catch (Exception e) {                    e.printStackTrace();                }                 if (client.c_singleFrames.containsKey(name)) {                    client.c_singleFrames.get(name).closeSingleFrame();                    client.c_singleFrames.remove(name);                }            } else {                List<Integer> online = new ArrayList<Integer>();                for (int i = 0; i < client.username_online.size(); i++) {                    online.add(0, client.clientuserid.get(i));                }                if (online.isEmpty()) {                    for (int i = 1; i < infos.length; i++) {                        if ((int) Integer.parseInt(infos[i]) != client                                .getThreadID()) {                            client.username_online.add(0, infos[i - 1]);                            client.clientuserid.add(0,                                    Integer.parseInt(infos[i]));                        }                        i++;                    }                } else {                    for (int i = 1; i < infos.length; i++) {                        if (Integer.parseInt(infos[i]) != client.getThreadID()) {                            if (!online.contains(Integer.parseInt(infos[i]))) {                                client.username_online.add(0, infos[i - 1]);                                client.clientuserid.add(0,                                        Integer.parseInt(infos[i]));                            } else {                                String name = client.username_online                                        .get(client.clientuserid                                                .indexOf(Integer                                                        .parseInt(infos[i])));                                if (!name.equals(infos[i - 1])) {                                    if (client.c_singleFrames.containsKey(name)) {                                        Client_singleFrame cf = client.c_singleFrames                                                .get(name);                                        cf.setTitle(name);                                        client.c_singleFrames.remove(name);                                        client.c_singleFrames.put(name, cf);                                        cf.setVisible(false);                                     }                                    client.username_online.remove(name);                                    client.clientuserid.remove(new Integer(                                            Integer.parseInt(infos[i])));                                    client.username_online.add(0, infos[i - 1]);                                    client.clientuserid.add(0,                                            Integer.parseInt(infos[i]));                                }                            }                        }                        i++;                    }                }             }            try {                for (int i = 0; i < client.username_online.size(); i++) {                    info[i] = client.username_online.get(i);                }             } catch (Exception e) {            }            jlt_disUsers.removeAll();            jlt_disUsers.setListData(info);        }    }     public void closeClient() {        JOptionPane.showMessageDialog(this, "服务器已关闭", "提示",                JOptionPane.OK_OPTION);        client.exitClient();        setVisible(false);    }     @Override    public void valueChanged(ListSelectionEvent e) {        if (e.getSource() == jlt_disUsers) {        }    }     public void createSingleChatFrame(String name) {        Client_singleFrame c_singlFrame = new Client_singleFrame(client, name);        client.c_singleFrames.put(name, c_singlFrame);        try {            c_singlFrame.userThreadID = client.clientuserid                    .get(client.username_online.indexOf(name));        } catch (Exception e) {        }         c_singlFrame.setVisible(true);    }     public void setSingleFrame(String chat_re) {        String[] infos = chat_re.split("@single");        try {            if (client.c_singleFrames.containsKey(infos[0])) {                client.c_singleFrames.get(infos[0]).setDisMess(infos[3]);            } else {                createSingleChatFrame(infos[0]);                client.c_singleFrames.get(infos[0]).setDisMess(infos[3]);            }        } catch (Exception e) {        }    }}

单人聊天界面

package Client; import java.awt.BorderLayout;import java.awt.Component;import java.awt.Container;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date; import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException; public class Client_singleFrame extends JFrame implements ActionListener, KeyListener {         private static final long serialVersionUID = 1L;    private static JTextArea jta_disMess;    private JTextField jtf_inputMess;    private JButton jbt_trans;     public int userThreadID = 0;     private Client client;     public Client_singleFrame(Client client, String title) {        this.client = client;        init(title);    }     private void init(String title) {        try {            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());        } catch (ClassNotFoundException e1) {            e1.printStackTrace();        } catch (InstantiationException e1) {            e1.printStackTrace();        } catch (IllegalAccessException e1) {            e1.printStackTrace();        } catch (UnsupportedLookAndFeelException e1) {            e1.printStackTrace();        }        setIconImage(Toolkit.getDefaultToolkit().getImage("Images/socket.jpg"));        WinCenter.center(this);        setTitle(title);        setSize(400, 400);        setResizable(false);        setContentPane(createContentPanel());        addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {                closeSingleFrame();            }        });    }     private Container createContentPanel() {        JPanel jp = new JPanel();        jp.setBorder(BorderFactory.createTitledBorder("聊天消息"));        jp.setLayout(new BorderLayout());        jta_disMess = new JTextArea();        jta_disMess.setEditable(false);        jp.add(BorderLayout.CENTER, new JScrollPane(jta_disMess));        jp.add(BorderLayout.SOUTH, createInput());        return jp;    }     private Component createInput() {        JPanel jp = new JPanel();        jp.setBorder(BorderFactory.createTitledBorder("发送消息"));        jp.setLayout(new BorderLayout());        jtf_inputMess = new JTextField();        jtf_inputMess.addKeyListener(this);        jbt_trans = new JButton("发送");        jbt_trans.addActionListener(this);        jp.add(jtf_inputMess, BorderLayout.CENTER);        jp.add(jbt_trans, BorderLayout.EAST);        return jp;    }     @Override    public void keyPressed(KeyEvent arg0) {        if (arg0.getKeyCode() == KeyEvent.VK_ENTER) {            if (arg0.getSource() == jtf_inputMess) {                jbt_trans.doClick();            }        }    }     @Override    public void keyReleased(KeyEvent arg0) {    }     @Override    public void keyTyped(KeyEvent arg0) {    }     @Override    public void actionPerformed(ActionEvent e) {        if (e.getSource() == jbt_trans) {            String str = jtf_inputMess.getText();            str.trim();            jtf_inputMess.setText("");            if (str.equals("")) {                JOptionPane.showMessageDialog(this, "信息不能为空");            } else {                SimpleDateFormat form = new SimpleDateFormat("yyyy-MM-dd  HH:mm");                String date = form.format(new Date());                String mess = client.username + "  " + date + "\n" + str;                jta_disMess.append(mess + "\n");                jta_disMess.setCaretPosition(jta_disMess.getText().length());                int index = client.username_online.indexOf(this.getTitle());                String info = client.username + "@single" + client.getThreadID() + "@single" +                        (int) client.clientuserid.get(index) + "@single" +                        mess + "@single";                try {                    client.dos.writeUTF(info);                } catch (IOException e1) {                    e1.printStackTrace();                }            }        }    }     public void setDisMess(String chat_re) {        jta_disMess.append(chat_re + "\n");        jta_disMess.setCaretPosition(jta_disMess.getText().length());    }     public void closeSingleFrame() {        client.c_singleFrames.remove(this.getTitle());        setVisible(false);    }     public void setExitNotify() {        jta_disMess.append(this.getTitle() + "已下线.....");        jbt_trans.setEnabled(false);    }}

设置窗体居中

package Client; import java.awt.Dimension;import java.awt.Toolkit;import java.awt.Window; public class WinCenter {    public static void center(Window win) {        Toolkit tkit = Toolkit.getDefaultToolkit();        Dimension sSize = tkit.getScreenSize();        Dimension wSize = win.getSize();        if (wSize.height > sSize.height) {            wSize.height = sSize.height;        }        if (wSize.width > sSize.width) {            wSize.width = sSize.width;        }        win.setLocation((sSize.width - wSize.width) / 2, (sSize.height - wSize.height) / 2);    }}

以上就是关于“Java如何实现聊天室界面”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: Java如何实现聊天室界面

本文链接: https://www.lsjlt.com/news/329787.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java实现聊天室界面
    本文实例为大家分享了Java实现聊天室界面的具体代码,供大家参考,具体内容如下 服务器端: package Server;   import java.awt.Toolkit; im...
    99+
    2022-11-13
  • Java如何实现聊天室界面
    这篇“Java如何实现聊天室界面”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现聊天室界面”文章吧。服务器端:...
    99+
    2023-06-30
  • Java实现多人聊天室(含界面)
    本文实例为大家分享了Java实现多人聊天室的具体代码,供大家参考,具体内容如下 先说,记录本人的学习过程,当笔记了 多人聊天室分为 1.服务器 ①.while循环 (guanbo) ...
    99+
    2022-11-13
  • Java聊天室之实现聊天室服务端功能
    目录一、题目描述二、解题思路三、代码详解多学一个知识点一、题目描述 题目实现:实现聊天室服务器端功能。运行程序,服务端等待客户端连接,并显示客户端的连接信息。 二、解题思路 创建一个...
    99+
    2022-11-13
    Java实现聊天室 Java 聊天室 Java 服务端
  • Java聊天室之实现聊天室客户端功能
    目录一、题目描述二、解题思路三、代码详解一、题目描述 题目实现:实现聊天室客户端。运行程序,用户登录服务器后,可以从用户列表中选择单个用户进行聊天,也可以选择多个用户进行聊天。 二、...
    99+
    2022-11-13
    Java实现聊天室 Java 聊天室 Java 客户端
  • android聊天界面如何实现
    要实现一个Android聊天界面,可以按照以下步骤进行:1. 创建一个聊天界面的布局文件,可以使用LinearLayout或者Rel...
    99+
    2023-09-18
    android
  • Vue实现聊天界面
    本文实例为大家分享了Vue实现聊天界面展示的具体代码,供大家参考,具体内容如下 1.功能需求 根据索引选择跟不同的人进行聊天 2.代码展示 mock.js: import M...
    99+
    2022-11-12
  • Java Socket实现简易聊天室
    Java-Socket编程实现简易聊天室(TCP),供大家参考,具体内容如下 实现一个服务器接收多个客户端 测试: 首先启动服务器,然后启动三个客户端,输入三个不同的用户名,分别在聊...
    99+
    2022-11-11
  • Java Socket模拟实现聊天室
    使用Java Socket模拟实现了一个聊天室,实现了基本的私聊以及群聊。分为服务器端和客户端,下面我来介绍一下实现的步骤。 服务器端 服务器端是聊天室的核心所在,主要用来处理客户端...
    99+
    2022-11-12
  • Java实现单线程聊天室
    本文实例为大家分享了Java实现单线程聊天室的具体代码,供大家参考,具体内容如下 一. Socket API简介 1. Socket编程 Java.net.Socket类代表一个套接...
    99+
    2022-11-13
  • Java实现多线程聊天室
    本文实例为大家分享了Java实现多线程聊天室的具体代码,供大家参考,具体内容如下 之前呢已经用单线程的方式来实现了聊天室,但其实它的功能并不齐全,下面用多线程来实现,功能会比单线程聊...
    99+
    2022-11-12
  • Java Socket实现聊天室功能
    本文实例为大家分享了Java Socket实现聊天室的具体代码,供大家参考,具体内容如下 1 创建登录判断类UserLogin import java.util.HashSet; i...
    99+
    2022-11-13
  • Java怎么实现NIO聊天室
    这篇文章给大家分享的是有关Java怎么实现NIO聊天室的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。功能介绍功能:群聊+私发+上线提醒+下线提醒+查询在线用户文件Utils需要用maven导入下面两个包 ...
    99+
    2023-06-15
  • Java NIO实现聊天室功能
    本文实例为大家分享了Java NIO实现聊天室功能的具体代码,供大家参考,具体内容如下 代码里面已经包含了必要的注释,这里不详述了。实现了基本的聊天室功能。 常量类: publi...
    99+
    2022-11-12
  • Java NIO实现多人聊天室
    本文实例为大家分享了Java NIO实现多人聊天室的具体代码,供大家参考,具体内容如下 1. 服务器端代码 ChatServer类: package nio.test.serve...
    99+
    2022-11-12
  • 如何实现react-native聊天室
    这篇文章将为大家详细讲解有关如何实现react-native聊天室,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言最近都沉浸在react native原生app开发...
    99+
    2022-10-19
  • Java编写实现多人聊天室
    本文实例为大家分享了Java实现多人聊天室的具体代码,供大家参考,具体内容如下 1.客户端 package tk.javazhangwei.net.tcp.chat.Demo03; ...
    99+
    2022-11-13
  • java实现多人聊天对话室
    使用ServerSocket和Socket实现服务器端和客户端的Socket通信。 了解完socket通信步骤后可以发现本实验需要写两个类:Server和Client,并且要先运行...
    99+
    2022-11-12
  • Java如何实现聊天室服务端功能
    这篇文章主要介绍“Java如何实现聊天室服务端功能”,在日常操作中,相信很多人在Java如何实现聊天室服务端功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何实现聊天室服务端功能”的疑惑有所帮助!...
    99+
    2023-07-04
  • Python聊天室带界面实现的示例代码(tkinter,Mysql,Treading,socket)
    一、前言 我用的是面向对象写的,把界面功能模块封装成类,然后在客户端创建对象然后进行调用。好处就是方便我们维护代码以及把相应的信息封装起来,每一个实例都是各不相同的。 所有的界面按钮...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作