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

📄 chatclient.java

📁 java 聊天程序(c/s)适合初学者使用
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.util.*;
/*
 * ChatApplet.java
 *
 * Created on July 25, 2000, 7:37 PM
 */

/**
 *
 * @author  Yani Ioannou
 * @version 1.0
 */
public class ChatClient extends javax.swing.JApplet {
    static TcpConnect connect=null;
    ResourceBundle res = ResourceBundle.getBundle("Res");
    boolean isStandalone = false;
    static javax.swing.tree.DefaultMutableTreeNode userRoot;
    static javax.swing.tree.DefaultTreeModel usrModel;
    static javax.swing.tree.DefaultMutableTreeNode msgRoot;
    static javax.swing.tree.DefaultTreeModel msgModel;
    java.applet.AudioClip userenter;
	  java.applet.AudioClip userleave;
	  java.applet.AudioClip newmsg;
    public ChatClient() {

    }
	 public void start()
	 {
	 		initComponents ();
	 }
    private void initComponents () {
        North = new javax.swing.JToolBar ();
        nameText = new javax.swing.JTextField ();
        serverCombo = new javax.swing.JComboBox ();
        portText = new javax.swing.JTextField ();
        connectButton = new javax.swing.JToggleButton ();
        South = new javax.swing.JToolBar ();
        messageText = new javax.swing.JTextField ();
        sendButton = new javax.swing.JButton ();
        SplitPane = new javax.swing.JSplitPane ();
        UserScroll = new javax.swing.JScrollPane ();
        userRoot = new javax.swing.tree.DefaultMutableTreeNode(res.getString("User_List"));
        usrModel=new javax.swing.tree.DefaultTreeModel(userRoot);
        userTree = new javax.swing.JTree(usrModel);
        userTree.putClientProperty(res.getString("JTree_lineStyle"), res.getString("Angled"));
        //get sounds
        try{
        if(isStandalone)
		    {
		  		userenter=newAudioClip(getClass().getResource(res.getString("userenter_wav")));
		  		userleave=newAudioClip(getClass().getResource(res.getString("userleave_wav")));
		  		newmsg=newAudioClip(getClass().getResource(res.getString("newmsg_wav")));
        		//java.applet.AudioClip audioClip = newAudioClip(completeURL);
        }else
        {
		  		userenter=getAudioClip(getClass().getResource(res.getString("userenter_wav")));
		  		userleave=getAudioClip(getClass().getResource(res.getString("userleave_wav")));
		  		newmsg=getAudioClip(getClass().getResource(res.getString("newmsg_wav")));
        		//java.applet.AudioClip audioClip = getAudioClip(baseURL, relativeURL);
        }}catch(Exception e) {} 
		  try{
        } catch (Exception e) {}
	  	  if(getClass().getResource(res.getString("userm_gif"))!=null)
		  {
		  		javax.swing.tree.DefaultTreeCellRenderer renderer = new javax.swing.tree.DefaultTreeCellRenderer();
		  		renderer.setLeafIcon(new javax.swing.ImageIcon(getClass().getResource(res.getString("userm_gif")), res.getString("User")));
        		userTree.setCellRenderer(renderer);
		  }
		  else
		  {
		  		System.out.println(res.getString("Could_not_load_userm"));
		  }
        msgRoot = new javax.swing.tree.DefaultMutableTreeNode(res.getString("Message_List"));
        msgModel=new javax.swing.tree.DefaultTreeModel(msgRoot);
        msgTree = new javax.swing.JTree(msgModel);
        msgTree.putClientProperty(res.getString("JTree_lineStyle"), res.getString("Angled"));
        if(getClass().getResource(res.getString("nm_gif"))!=null)
		  {
		  		javax.swing.tree.DefaultTreeCellRenderer msgrenderer = new javax.swing.tree.DefaultTreeCellRenderer();
		  		msgrenderer.setLeafIcon(new javax.swing.ImageIcon(getClass().getResource(res.getString("nm_gif")), res.getString("New_Message")));
        		msgTree.setCellRenderer(msgrenderer);
		  }
		  else
		  {
		  		System.out.println(res.getString("Could_not_load_nm_gif"));
		  }
        messageScroll = new javax.swing.JScrollPane ();
        setName (res.getString("ChatPanel"));

          nameText.setPreferredSize (new java.awt.Dimension(70, 45));
          nameText.setBorder (new javax.swing.border.TitledBorder(res.getString("Name")));
          nameText.setBackground (java.awt.Color.lightGray);
          nameText.setMinimumSize (new java.awt.Dimension(70, 45));
          nameText.setOpaque (false);

          North.add (nameText);


          if(isStandalone==false)
          {
          		if(getCodeBase().getHost().toString().equals(""))
		         {
		         	serverCombo.addItem(res.getString("127_0_0_1"));
			 		}else
					{
						serverCombo.addItem(getCodeBase().getHost().toString());
					}
		    }else
		    {
		         serverCombo.addItem("");
		    }
          serverCombo.setPreferredSize (new java.awt.Dimension(130, 45));
          serverCombo.setBorder (new javax.swing.border.TitledBorder(res.getString("Server_Name_IP")));
          serverCombo.setMinimumSize (new java.awt.Dimension(126, 45));
          serverCombo.setEditable (isStandalone);
          serverCombo.setOpaque (false);
          serverCombo.addActionListener (new java.awt.event.ActionListener () {
              public void actionPerformed (java.awt.event.ActionEvent evt) {
                  comboChanged (evt);
              }
          }
          );

          North.add (serverCombo);

          portText.setPreferredSize (new java.awt.Dimension(40, 45));
          portText.setBorder (new javax.swing.border.TitledBorder(res.getString("Port")));
          portText.setMaximumSize (new java.awt.Dimension(60, 2147483647));
          portText.setText (res.getString("1024"));
          portText.setMinimumSize (new java.awt.Dimension(40, 45));
          portText.setOpaque (false);

          North.add (portText);

          connectButton.setText (res.getString("Connect"));
          connectButton.setOpaque (false);
          connectButton.addActionListener (new java.awt.event.ActionListener () {
              public void actionPerformed (java.awt.event.ActionEvent evt) {
                  connectButtonActionPerformed (evt);
              }
          }
          );

          North.add (connectButton);


        getContentPane ().add (North, java.awt.BorderLayout.NORTH);


          messageText.setPreferredSize (new java.awt.Dimension(200, 43));
          messageText.setBorder (new javax.swing.border.TitledBorder(res.getString("Message")));
          messageText.setBackground (java.awt.Color.lightGray);
          messageText.setMinimumSize (new java.awt.Dimension(80, 43));
          messageText.setEnabled (false);
          messageText.setOpaque (false);
          messageText.addKeyListener (new java.awt.event.KeyAdapter () {
              public void keyPressed (java.awt.event.KeyEvent evt) {
                  messageTextKeyPressed (evt);
              }
          }
          );

          South.add (messageText);

          sendButton.setPreferredSize (new java.awt.Dimension(40, 27));
          sendButton.setMaximumSize (new java.awt.Dimension(40, 27));
          sendButton.setText (res.getString("Send"));
          sendButton.setMinimumSize (new java.awt.Dimension(40, 27));
          sendButton.setEnabled (false);
          sendButton.setOpaque (false);
          sendButton.addActionListener (new java.awt.event.ActionListener () {
              public void actionPerformed (java.awt.event.ActionEvent evt) {
                  sendButtonActionPerformed (evt);
              }
          }
          );

          South.add (sendButton);


        getContentPane ().add (South, java.awt.BorderLayout.SOUTH);

        SplitPane.setOneTouchExpandable (true);
        SplitPane.setDividerLocation(110);

          UserScroll.setPreferredSize (new java.awt.Dimension(50, 100));
          UserScroll.setMinimumSize (new java.awt.Dimension(40, 40));
          UserScroll.setOpaque (false);

            userTree.setShowsRootHandles (true);
            userTree.setMaximumSize (new java.awt.Dimension(74, 999999));
            userTree.setMinimumSize (new java.awt.Dimension(60, 70));
            userTree.expandRow(0);
            msgTree.setShowsRootHandles (false);
            msgTree.expandRow(0);
            msgTree.setRootVisible(false);


            UserScroll.setViewportView (userTree);

          SplitPane.setLeftComponent (UserScroll);

          messageScroll.setViewportBorder (new javax.swing.border.BevelBorder(1));
          messageScroll.setOpaque (false);

            messageScroll.setViewportView (msgTree);

          SplitPane.setRightComponent (messageScroll);


        getContentPane ().add (SplitPane, java.awt.BorderLayout.CENTER);

    }

  private void messageTextKeyPressed (java.awt.event.KeyEvent evt) {
    //if key is 'enter' then send message
    //if messageText!="" then sendButton enabled, else disabled
    if(messageText.getText().equals("")==false)
    {
    	if(evt.getKeyCode()==evt.VK_ENTER)
    	{
    	    	connect.send(nameText.getText()+res.getString("says_")+messageText.getText());
    		messageText.setText("");
    	}
    }
  }

  private void sendButtonActionPerformed (java.awt.event.ActionEvent evt) {
    if(messageText.getText().equals("")==false)
    {
    	connect.send(nameText.getText()+res.getString("says_")+messageText.getText());
    	messageText.setText("");
    }
  }

  private void comboChanged (java.awt.event.ActionEvent evt) {
    //add item to list
    serverCombo.addItem(serverCombo.getSelectedItem());
  }

  private void connectButtonActionPerformed (java.awt.event.ActionEvent evt) {
   userRoot.removeAllChildren();
   usrModel.reload();
   if(portText.getText().equals("")||portText.getText()==null)
    {
        portText.setText(res.getString("1024"));
    }
    if(serverCombo.getSelectedItem().toString().equals("")||serverCombo.getItemCount()<=0)
    {
        message(res.getString("Error_Please_enter"));
        connectButton.setSelected(false);
    }
    else if(nameText.getText().equals(""))
    {
        message(res.getString("Error_Please_enter_a"));
        connectButton.setSelected(false);
    }
    else
    {
        if(connectButton.getText().equals(res.getString("Connect")))
        {
            connectButton.setEnabled(false);
            connectButton.setText(res.getString("Disconnect"));
            clear();
            message(res.getString("Connecting_to_server_"));
            //conneciton code
            connect = new TcpConnect(serverCombo.getSelectedItem().toString(), Integer.parseInt(portText.getText()),this);
            serverCombo.setEnabled(false);
            portText.setEnabled(false);
            nameText.setEnabled(false);
            sendButton.setEnabled(true);
            messageText.setEnabled(true);
            message(res.getString("Done"));
            connectButton.setEnabled(true);
        }
        else
        {
            connectButton.setEnabled(false);
            connectButton.setText(res.getString("Connect"));
            message(res.getString("Disconnecting_from"));
            serverCombo.setEnabled(true);
            portText.setEnabled(true);
            nameText.setEnabled(true);
            sendButton.setEnabled(false);

⌨️ 快捷键说明

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