⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainframe.java~79~

📁 远程登录程序
💻 JAVA~79~
字号:
package multiclientnew;

import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.border.EtchedBorder;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import javax.swing.JScrollPane;
import java.awt.BorderLayout;
import javax.swing.JTextArea;
import javax.swing.JFileChooser;
import java.net.*;
import java.io.*;
import java.util.Vector;
import java.util.StringTokenizer;
import javax.swing.JList;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class MainFrame extends JFrame {
    String nameRequest;
    String ipRequest;
    String iplocal;
    Socket socket = null;
    BufferedReader cin = null;
    PrintStream cout = null;
    String clientName = "";
    JPanel contentPane;
    JMenuBar jMenuBar1 = new JMenuBar();
    JMenu jMenuFile = new JMenu();
    JMenuItem jMenuFileExit = new JMenuItem();
    JMenu jMenuHelp = new JMenu();
    JMenuItem jMenuHelpAbout = new JMenuItem();
    JLabel jLabel1 = new JLabel();
    JTextField jTextField1 = new JTextField();
    JPanel jPanel1 = new JPanel();
    Border border1 = BorderFactory.createEtchedBorder(EtchedBorder.RAISED,
            Color.white, new Color(148, 145, 140));
    Border border2 = new TitledBorder(border1, "MESSAGE");
    BorderLayout borderLayout1 = new BorderLayout();
    JScrollPane jScrollPane1 = new JScrollPane();
    JTextArea jTextArea1 = new JTextArea();
    JPanel jPanel2 = new JPanel();
    JScrollPane jScrollPane2 = new JScrollPane();
    JTextArea jTextArea2 = new JTextArea();
    JButton jButton2 = new JButton();
    JLabel jLabel3 = new JLabel();
    JTextField jTextField3 = new JTextField();
    JPanel jPanel3 = new JPanel();
    BorderLayout borderLayout3 = new BorderLayout();
    JList jList1 = new JList();
    public MainFrame() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            ConnectServer();
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    /**
     * Component initialization.
     *
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception {
        border1 = new TitledBorder(BorderFactory.createEtchedBorder(
                EtchedBorder.RAISED, Color.white, new Color(148, 145, 140)),
                                   "people");
        border2 = new TitledBorder(BorderFactory.createEtchedBorder(
                EtchedBorder.RAISED, Color.white, new Color(148, 145, 140)),
                                   "message");
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(null);
        setSize(new Dimension(460, 420));
        setTitle("Frame Title");
        jMenuFile.setText("File");
        jMenuFileExit.setText("Exit");
        jMenuFileExit.addActionListener(new
                                        MainFrame_jMenuFileExit_ActionAdapter(this));
        jMenuHelp.setText("Help");
        jMenuHelpAbout.setText("About");
        jMenuHelpAbout.addActionListener(new
                                         MainFrame_jMenuHelpAbout_ActionAdapter(this));
        jLabel1.setBorder(null);
        jLabel1.setText("服务器ip");
        jLabel1.setBounds(new Rectangle(15, 12, 55, 31));
        jTextField1.setBounds(new Rectangle(76, 17, 97, 22));
        jPanel1.setBackground(new Color(219, 229, 246));
        jPanel1.setBorder(border2);
        jPanel1.setBounds(new Rectangle(15, 44, 312, 177));
        jPanel1.setLayout(borderLayout1);
        jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.
                                                  HORIZONTAL_SCROLLBAR_ALWAYS);
        jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.
                                                VERTICAL_SCROLLBAR_ALWAYS);
        jPanel2.setBackground(new Color(219, 229, 246));
        jPanel2.setBorder(border2);
        jPanel2.setBounds(new Rectangle(15, 239, 312, 122));
        jPanel2.setLayout(null);
        jButton2.setBackground(new Color(218, 227, 245));
        jButton2.setBounds(new Rectangle(238, 93, 68, 23));
        jButton2.setForeground(new Color(146, 161, 198));
        jButton2.setText("发送");
        jButton2.addActionListener(new MainFrame_jButton2_actionAdapter(this));
        jLabel3.setText("客户名称");
        jLabel3.setBounds(new Rectangle(187, 14, 57, 28));
        jTextField3.setText("12");
        jTextField3.setBounds(new Rectangle(264, 18, 75, 22));
        jPanel3.setBackground(new Color(219, 229, 246));
        jPanel3.setBorder(border1);
        jPanel3.setBounds(new Rectangle(330, 47, 121, 313));
        jPanel3.setLayout(borderLayout3);
        jTextArea1.setEditable(false);
        jList1.addMouseListener(new MainFrame_jList1_mouseAdapter(this));
        contentPane.setBackground(new Color(235, 241, 250));
        jScrollPane2.setBounds(new Rectangle(6, 12, 300, 80));
        jMenuBar1.add(jMenuFile);
        jMenuFile.add(jMenuFileExit);
        jMenuBar1.add(jMenuHelp);
        jMenuHelp.add(jMenuHelpAbout);
        contentPane.add(jLabel1);
        contentPane.add(jPanel1);
        contentPane.add(jPanel2);
        contentPane.add(jTextField1);
        contentPane.add(jLabel3);
        contentPane.add(jTextField3);
        contentPane.add(jPanel3);
        jPanel3.add(jList1, java.awt.BorderLayout.CENTER);
        jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER);
        jScrollPane1.getViewport().add(jTextArea1);
        jPanel2.add(jButton2, null);
        jPanel2.add(jScrollPane2);
        jScrollPane2.getViewport().add(jTextArea2);
        setJMenuBar(jMenuBar1);
    }

    /**
     * File | Exit action performed.
     *
     * @param actionEvent ActionEvent
     */
    void jMenuFileExit_actionPerformed(ActionEvent actionEvent) {
        String str="QUIT";
        cout.println(str);
        jTextArea1.append("客户请求断开连接\n");
        System.exit(0);
    }

    /**
     * Help | About action performed.
     *
     * @param actionEvent ActionEvent
     */
    void jMenuHelpAbout_actionPerformed(ActionEvent actionEvent) {
        MainFrame_AboutBox dlg = new MainFrame_AboutBox(this);
        Dimension dlgSize = dlg.getPreferredSize();
        Dimension frmSize = getSize();
        Point loc = getLocation();
        dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x,
                        (frmSize.height - dlgSize.height) / 2 + loc.y);
        dlg.setModal(true);
        dlg.pack();
        dlg.setVisible(true);
    }

    public void ConnectServer() {
        try{
            InetAddress ip = InetAddress.getByName(jTextField1.getText());
            int port = 6666;
            socket = new Socket(ip,port);
            jTextArea1.append("系统提示:与服务器连接成功...........\n");
            String str2 = this.socket.getLocalAddress().toString();
            iplocal = str2.substring(1);
            System.out.println(iplocal);
        }catch(IOException e1){
            jTextArea1.append("服务器端口打开出错\n");
        }
        if(socket!=null){
            jTextArea1.append("系统提示与服务器连接成功............\n");
            clientName = jTextField3.getText().trim();
            try{
                cin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                cout = new PrintStream(socket.getOutputStream());
                String str = "PEOPLE:"+clientName;
                cout.println(str);
                ReadMessageThread readThread = new ReadMessageThread();
                readThread.start();
            }catch(IOException e3){
                jTextArea1.append("输入输出异常\n");
            }
        }
    }

    public void jButton2_actionPerformed(ActionEvent e) {
        String str = jTextArea2.getText();
        str = "MSG:"+clientName+":"+str;
        jTextArea2.setText("");
        cout.println(str);
    }

    public void jButton3_actionPerformed(ActionEvent e) {
        String str="QUIT";
        cout.println(str);
        jTextArea1.append("客户请求断开连接\n");
    }

    public void jList1_mouseClicked(MouseEvent e) {
        if(e.getClickCount()==2){
            String str=new String();
            str= jList1.getSelectedValue().toString();
            String namef = str.substring(0,str.indexOf("/"));
            String ip = str.substring(str.indexOf("/")+1);
            String names = jTextField3.getText();
            jTextArea1.append("向"+namef+"提出私聊请求\n");
            cout.println("ConnectionRequest:"+namef+":"+ip+":"+names+":"+iplocal);
        }
    }

    class ReadMessageThread extends Thread{
        public void run(){
            String line = "";
            while(true){
                try{
                    line = cin.readLine();
                }catch(IOException e){
                    jTextArea1.append("输入输出异常\n");
                }
                StringTokenizer st = new StringTokenizer(line,":");
                String keyword = st.nextToken();
                if(keyword.equalsIgnoreCase("QUIT")){
                    try{
                        socket.close();
                        jTextArea1.append("接收到服务器同意断开信息,套接字关闭\n");
                    }catch(IOException e){
                        jTextArea1.append("套接字关闭异常\n");
                    }
                    this.stop();
                }else if(keyword.equalsIgnoreCase("PEOPLE")){
                    Vector imessage = new Vector();
                    while(st.hasMoreTokens())
                        imessage.addElement(st.nextToken());
                        jList1.setListData(imessage);
                }else if(keyword.equalsIgnoreCase("ConnectionRequest")){
                    String nameConnection = st.nextToken();
                    String ipConnection = st.nextToken();
                    nameRequest = st.nextToken();
                    ipRequest = st.nextToken();
                    if(nameConnection.equalsIgnoreCase(jTextField3.getText())){
                        JDialogConnection dgc = new JDialogConnection(nameConnection,nameRequest,ipRequest,cout,iplocal);
                    }
                }else if(keyword.equalsIgnoreCase("ConnectionYes")){
                    String ip1;
                    ip1 = st.nextToken();
                    String ip2;
                    ip2 = st.nextToken();
                    String dk = st.nextToken();
                    int portget = Integer.parseInt(dk);
                    if(ip1.equalsIgnoreCase(iplocal)){
                        jTextArea1.append("同意连接\n");
                        PtoPChat first = new PtoPChat(ip2,portget);
                    }
                    if(ip2.equalsIgnoreCase(iplocal)){
                       jTextArea1.append("同意连接\n");
                       PtoPChat second = new PtoPChat(ip1,portget);
                   }
                }else if(keyword.equalsIgnoreCase("ConnectionNo")){
                    String ip1;
                    ip1 = st.nextToken();
                    String ip2;
                    ip2 = st.nextToken();
                    if(ip1.equalsIgnoreCase(iplocal)){
                        jTextArea1.append("拒绝连接\n");
                    }
                    if(ip2.equalsIgnoreCase(iplocal)){
                       jTextArea1.append("拒绝连接\n");
                   }

                }else{
                    String message = st.nextToken("\0");
                    message = message.substring(1);
                    jTextArea1.append(message+"\n");
                }
            }
        }
    }
}



class MainFrame_jList1_mouseAdapter extends MouseAdapter {
    private MainFrame adaptee;
    MainFrame_jList1_mouseAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void mouseClicked(MouseEvent e) {
        adaptee.jList1_mouseClicked(e);
    }
}


class MainFrame_jButton2_actionAdapter implements ActionListener {
    private MainFrame adaptee;
    MainFrame_jButton2_actionAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton2_actionPerformed(e);
    }
}


class MainFrame_jMenuFileExit_ActionAdapter implements ActionListener {
    MainFrame adaptee;

    MainFrame_jMenuFileExit_ActionAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuFileExit_actionPerformed(actionEvent);
    }
}


class MainFrame_jMenuHelpAbout_ActionAdapter implements ActionListener {
    MainFrame adaptee;

    MainFrame_jMenuHelpAbout_ActionAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuHelpAbout_actionPerformed(actionEvent);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -