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

📄 chatserver.java

📁 java 聊天程序(c/s)适合初学者使用
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * ChatServer.java
 *
 * Created on July 26, 2000, 10:35 PM
 */



/**
 *
 * @author  Yani Ioannou
 * @version 1.0
 */
public class ChatServer extends javax.swing.JFrame {
    Host Server=null;
    static javax.swing.tree.DefaultMutableTreeNode msgRoot=null;
    static javax.swing.tree.DefaultMutableTreeNode userRoot=null;
    static javax.swing.tree.DefaultTreeModel msgModel=null;
    static javax.swing.tree.DefaultTreeModel usrModel=null;
    /** Creates new form ChatServer */
    public ChatServer() {
        initComponents ();
        setSize(500,360);
        java.awt.Dimension d = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setLocation((d.width - getSize().width) / 2, (d.height - getSize().height) / 2);
    }
    private void initComponents () {
        SplitPane = new javax.swing.JSplitPane ();
        MessagePane = new javax.swing.JScrollPane ();
        msgRoot = new javax.swing.tree.DefaultMutableTreeNode("Messages");
        msgModel=new javax.swing.tree.DefaultTreeModel(msgRoot);
        javax.swing.tree.DefaultTreeCellRenderer msgrenderer = new javax.swing.tree.DefaultTreeCellRenderer();
        msgrenderer.setLeafIcon(new javax.swing.ImageIcon(getClass().getResource("images/nm.gif")));
        MessageTree=new javax.swing.JTree(msgModel);
        MessageTree.setCellRenderer(msgrenderer);
        MessageTree.putClientProperty("JTree.lineStyle", "Angled");        
        UserPane = new javax.swing.JScrollPane ();
        userRoot = new javax.swing.tree.DefaultMutableTreeNode("User List");
        usrModel=new javax.swing.tree.DefaultTreeModel(userRoot);
        javax.swing.tree.DefaultTreeCellRenderer usrrenderer = new javax.swing.tree.DefaultTreeCellRenderer();
        usrrenderer.setLeafIcon(new javax.swing.ImageIcon(getClass().getResource("images/userm.gif")));
        UserTree = new javax.swing.JTree(usrModel);
        UserTree.setCellRenderer(usrrenderer);
        North = new javax.swing.JToolBar ();
        ServerName = new javax.swing.JTextPane ();
        Port = new javax.swing.JTextPane ();
        StartButton = new javax.swing.JToggleButton ();
        South = new javax.swing.JToolBar ();
        MessageText = new javax.swing.JTextPane ();
        SendButton = new javax.swing.JButton ();
	      debugCheck=new javax.swing.JCheckBox();
        setTitle ("Kaff Chat Server");
        addWindowListener (new java.awt.event.WindowAdapter () {
            public void windowClosing (java.awt.event.WindowEvent evt) {
                exitForm (evt);
            }
        }
        );

        SplitPane.setDividerLocation (120);
        SplitPane.setContinuousLayout (true);
        SplitPane.setOneTouchExpandable (true);

            MessageTree.setShowsRootHandles (false);
            MessageTree.expandRow(0);
            MessageTree.setRootVisible(false);

            MessagePane.setViewportBorder (new javax.swing.border.BevelBorder(1));
            MessagePane.setOpaque (false);
            MessagePane.setViewportView (MessageTree);
    
          SplitPane.setRightComponent (MessagePane);
  
          UserPane.setViewportBorder (new javax.swing.border.BevelBorder(1));
  
            UserTree.setShowsRootHandles (true);
            UserTree.setPreferredSize (new java.awt.Dimension(74, 40));
            UserTree.setMaximumSize (new java.awt.Dimension(999999, 99999));
            UserTree.setMinimumSize (new java.awt.Dimension(60, 40));
            UserTree.setShowsRootHandles (true);
    
            UserPane.setViewportView (UserTree);
    
          SplitPane.setLeftComponent (UserPane);
  

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

        North.setPreferredSize (new java.awt.Dimension(118, 50));
        North.setMinimumSize (new java.awt.Dimension(118, 45));
        North.setMaximumSize (new java.awt.Dimension(9999, 9999));

	  debugCheck.setBorder (new javax.swing.border.TitledBorder("Debug"));

	North.add (debugCheck);
          ServerName.setPreferredSize (new java.awt.Dimension(60, 35));
          ServerName.setBorder (new javax.swing.border.TitledBorder("LocalHost"));
          ServerName.setEditable (false);
          ServerName.setMinimumSize (new java.awt.Dimension(60, 35));
          ServerName.setOpaque (false);
  
          North.add (ServerName);
  
          Port.setPreferredSize (new java.awt.Dimension(40, 35));
          Port.setBorder (new javax.swing.border.TitledBorder("Port"));
          Port.setMaximumSize (new java.awt.Dimension(40, 2147483647));
          Port.setText ("1024");
          Port.setMinimumSize (new java.awt.Dimension(40, 35));
          Port.setOpaque (false);
  
          North.add (Port);
  
          StartButton.setText ("Start");
          StartButton.addActionListener (new java.awt.event.ActionListener () {
              public void actionPerformed (java.awt.event.ActionEvent evt) {
                  StartButtonActionPerformed (evt);
              }
          }
          );
  
          North.add (StartButton);
  

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


          MessageText.setBorder (new javax.swing.border.TitledBorder("Admin Message"));
          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.setText ("Send");
          SendButton.setEnabled (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);

    }
  private void SendButtonActionPerformed (java.awt.event.ActionEvent evt) {
    try
    {
        ChatServer.printd("Debug: Send button");
	if(MessageText.getText().equals("")==false)
 	{
	      Server.returnTb().receiveRequest("!Admin Message!> "+MessageText.getText());
   	 	MessageText.setText("");
    	}
    }
    catch(Exception e){}
  }

  private void StartButtonActionPerformed (java.awt.event.ActionEvent evt) {
    java.net.ServerSocket tmp=null;
    StartButton.setEnabled(false);
    clearMsgTree();
    if(Port.getText().equals(""))
    {
        Port.setText("1024");
    }
    if(StartButton.getText().equals("Start"))
    {        
        try
        {
            tmp=new java.net.ServerSocket(Integer.parseInt(Port.getText()));
        }catch(Exception e)
        {
            try{tmp.close();}catch(Exception ee) {}
            StartButton.setText("Start");
            StartButton.setEnabled(true);
            print("Port in use");
            return;
        }
        try{tmp.close();}catch(Exception e) {}
        Server=new Host(Integer.parseInt(Port.getText()),this);
        print("Server Started");
        StartButton.setText("Stop");
        StartButton.setEnabled(true);
        Port.setEnabled(false);
        MessageText.setEnabled(true);
        SendButton.setEnabled(true);
    }else
    {
        Server.kill();
        Server=null;
        StartButton.setText("Start");
        StartButton.setEnabled(true);
        Port.setEnabled(true);
        MessageText.setEnabled(false);
        SendButton.setEnabled(false);
    }
  }

  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)
    	{
		Server.returnTb().receiveRequest("!Admin Message!> " +MessageText.getText());
    		MessageText.setText("");
    	}
    }
  }
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
        System.exit (0);
    }
    public static void main (String args[]) {
        new ChatServer ().show ();
    }
    private javax.swing.JSplitPane SplitPane;
    private javax.swing.JScrollPane MessagePane;
    private static javax.swing.JTree MessageTree;
    private javax.swing.JScrollPane UserPane;
    private static javax.swing.JTree UserTree;
    private javax.swing.JToolBar North;
    private javax.swing.JTextPane ServerName;
    private javax.swing.JTextPane Port;
    private javax.swing.JToggleButton StartButton;
    private javax.swing.JToolBar South;
    private javax.swing.JTextPane MessageText;
    private javax.swing.JButton SendButton;
    private static javax.swing.JCheckBox debugCheck;

    public static synchronized void print(String s)
    {
        java.util.Calendar rightNow = java.util.Calendar.getInstance();
        //msgRoot.add(new javax.swing.tree.DefaultMutableTreeNode(rightNow.getTime().toString()+"> Server Message: "+s));
        addMesg(rightNow.getTime().toString()+"> Server Message: "+s);
        System.out.println(rightNow.getTime().toString()+"> Server Message: "+s);
        //try { Thread.sleep(10);} catch(Exception e){}
    }
    public static synchronized void printd(String s)
    {
        if(debugCheck.isSelected())
        {
            java.util.Calendar rightNow = java.util.Calendar.getInstance();
            addMesg(rightNow.getTime().toString()+"> Debug Message: "+s);
            System.out.println(rightNow.getTime().toString()+"> Debug Message: "+s);
        }
    }
    public static synchronized void removeUser(User usr)
    {
    	UserTree.setSelectionRow(1);
      int x;
      String Child;
	 		for(x=0;x<userRoot.getChildCount();x++)
			{
        Child =usrModel.getChild(userRoot,x).toString();
			  if(Child.equals(usr.getname())) break;
			}
      if(x!=userRoot.getChildCount())
      {
        usrModel.removeNodeFromParent((javax.swing.tree.MutableTreeNode) usrModel.getChild(userRoot, x));
      }else
      {
        System.out.println("error couldn't remove user");
      }
    }
    public void setHostName(String s)
    {
        ServerName.setText(s);
    }
    public void clearMsgTree()
    {
        msgRoot.removeAllChildren();
        msgModel.reload();
    }
    //------------------------------------------------------------------------------------
    public static javax.swing.tree.DefaultMutableTreeNode addMesg(Object child) {
        javax.swing.tree.DefaultMutableTreeNode parentNode = null;
        javax.swing.tree.TreePath parentPath=null;

        if (parentPath == null) {
            parentNode = msgRoot;
        } else {
            parentNode = (javax.swing.tree.DefaultMutableTreeNode)
                         (parentPath.getLastPathComponent());
        }

        return addMesg(parentNode, child, true);
    }

    public static javax.swing.tree.DefaultMutableTreeNode addMesg(javax.swing.tree.DefaultMutableTreeNode parent,
                                            Object child) {
        return addMesg(parent, child, false);
    }

    public static javax.swing.tree.DefaultMutableTreeNode addMesg(javax.swing.tree.DefaultMutableTreeNode parent,
                                            Object child, 
                                            boolean shouldBeVisible) {
        javax.swing.tree.DefaultMutableTreeNode childNode = new javax.swing.tree.DefaultMutableTreeNode(child);

        if (parent == null) {
            parent = msgRoot;
        }
        msgModel.insertNodeInto(childNode, parent, 
                                 parent.getChildCount());
        if (shouldBeVisible) {
            MessageTree.scrollPathToVisible(new javax.swing.tree.TreePath(childNode.getPath()));
        }
        return childNode;
    }
//------------------------------------------------------------------------------------
    public static javax.swing.tree.DefaultMutableTreeNode addUsermsg(Object child) {
        javax.swing.tree.DefaultMutableTreeNode parentNode = null;
        javax.swing.tree.TreePath parentPath=null;

        if (parentPath == null) {
            parentNode = userRoot;
        } else {
            parentNode = (javax.swing.tree.DefaultMutableTreeNode)
                         (parentPath.getLastPathComponent());
        }

        return addUsermsg(parentNode, child, true);
    }

    public static javax.swing.tree.DefaultMutableTreeNode addUsermsg(javax.swing.tree.DefaultMutableTreeNode parent,
                                            Object child) {
        return addUsermsg(parent, child, false);
    }

    public static javax.swing.tree.DefaultMutableTreeNode addUsermsg(javax.swing.tree.DefaultMutableTreeNode parent,
                                            Object child, 
                                            boolean shouldBeVisible) {
        javax.swing.tree.DefaultMutableTreeNode childNode = new javax.swing.tree.DefaultMutableTreeNode(child);

        if (parent == null) {

⌨️ 快捷键说明

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