pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

Java實(shí)現(xiàn)聊天室界面

這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)聊天室界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java實(shí)現(xiàn)聊天室界面的具體代碼,供大家參考,具體內(nèi)容如下

服務(wù)器端:

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("在線(xiàn)用戶(hù)"));
? ? ? ? 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, "是否要停止服務(wù)器?", "",
? ? ? ? ? ? ? ? ? ? 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, "不能同時(shí)開(kāi)啟兩個(gè)服務(wù)器");
? ? ? ? jbt_start.setEnabled(false);
? ? ? ? jbt_stop.setEnabled(false);
? ? }
}

設(shè)置窗口居中代碼:

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);
? ? }
}

客戶(hù)端:

登錄界面

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, "服務(wù)器連接端口號(hào)不能為空!");
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? JOptionPane.showMessageDialog(this, "服務(wù)器地址不能為空!");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? JOptionPane.showMessageDialog(this, "用戶(hù)名不能為空!");
? ? ? ? ? ? }
? ? ? ? }
? ? }
?
? ? @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("在線(xiàn)用戶(hù)"));
? ? ? ? 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, "不能發(fā)送空消息");
? ? ? ? ? ? ? ? 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, "您未選擇聊天對(duì)象\n請(qǐng)選擇要單獨(dú)聊天的對(duì)象");
? ? ? ? ? ? } 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,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "由于有同名的用戶(hù)登錄,所以您的用戶(hù)名后面加上了編號(hào)");
? ? ? ? ? ? ? ? ? ? ? ? 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()) {
? ? ? ? ? ? ? ? // 有人下線(xiàn)
? ? ? ? ? ? ? ? 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, "服務(wù)器已關(guān)閉", "提示",
? ? ? ? ? ? ? ? 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("發(fā)送消息"));
? ? ? ? jp.setLayout(new BorderLayout());
? ? ? ? jtf_inputMess = new JTextField();
? ? ? ? jtf_inputMess.addKeyListener(this);
? ? ? ? jbt_trans = new JButton("發(fā)送");
? ? ? ? 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() + "已下線(xiàn).....");
? ? ? ? jbt_trans.setEnabled(false);
? ? }
}

設(shè)置窗體居中

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);
? ? }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持html5模板網(wǎng)。

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

主站蜘蛛池模板: 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 番茄畅听邀请码怎么输入 - Dianw8.com | 分光色差仪,测色仪,反透射灯箱,爱色丽分光光度仪,美能达色差仪维修_苏州欣美和仪器有限公司 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | 电地暖-电采暖-发热膜-石墨烯电热膜品牌加盟-暖季地暖厂家 | 伶俐嫂培训学校_月嫂培训班在哪里报名学费是多少_月嫂免费政府培训中心推荐 | 中直网_行业门户-行业人专业的交流平台!| 间甲酚,间甲酚厂家-山东祥东新材料 | 陕西安闸机-伸缩门-车牌识别-广告道闸——捷申达门业科技 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | 自动化生产线-自动化装配线-直流电机自动化生产线-东莞市慧百自动化有限公司 | 一体式钢筋扫描仪-楼板测厚仪-裂缝检测仪-泰仕特(北京) | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 | 黑龙江京科脑康医院-哈尔滨精神病医院哪家好_哈尔滨精神科医院排名_黑龙江精神心理病专科医院 | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 办公室家具公司_办公家具品牌厂家_森拉堡办公家具【官网】 | 高速龙门架厂家_监控杆_多功能灯杆_信号灯杆_锂电池太阳能路灯-鑫世源照明 | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | atcc网站,sigma试剂价格,肿瘤细胞现货,人结肠癌细胞株购买-南京科佰生物 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 离子色谱自动进样器-青岛艾力析实验科技有限公司 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 科普仪器菏泽市教育教学仪器总厂 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | SMC-SMC电磁阀-日本SMC气缸-SMC气动元件展示网 | 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 一技任务网_有一技之长,就来技术任务网| 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 列管冷凝器,刮板蒸发器,外盘管反应釜厂家-无锡曼旺化工设备有限公司 |