Java实现聊天室界面
作者:Zhengxinyu666
这篇文章主要为大家详细介绍了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); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。