亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? chatgui.java

?? 精通RMI 這是RMI的入門基礎(chǔ) 特別對(duì)剛開始學(xué)RMI的同胞們很有幫助
?? JAVA
字號(hào):
/*
 * Copyright 1999 by dreamBean Software,
 * All rights reserved.
 */
package masteringrmi.chat.client;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.io.IOException;
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.Properties;
import java.util.HashMap;

import javax.swing.JApplet;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JList;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.ListCellRenderer;
import javax.swing.BorderFactory;
import javax.swing.SwingUtilities;
import javax.swing.border.TitledBorder;
import javax.swing.plaf.metal.MetalLookAndFeel;

import masteringrmi.chat.interfaces.Message;
import masteringrmi.chat.interfaces.MessageListener;
import masteringrmi.chat.interfaces.Topic;
import masteringrmi.chat.interfaces.TopicInfo;
import masteringrmi.chat.interfaces.TopicServer;
import masteringrmi.chat.interfaces.ListenerInfo;

/**
 *   This is the chat client applet GUI. This allow the user
 *   to interact with the server through a user interface. 
 *      
 *   @see ChatClient
 *   @author Rickard 謆erg (rickard@dreambean.com)
 *   @version $Revision:$
 */
public class ChatGUI
   extends JApplet
   implements ChatClient.MessageReceiver, ActionListener
{
   // Constants -----------------------------------------------------
   // This message is sent when user starts typing
   // It allows GUI to denote that user is currently typing a message
   static final String TYPING = "IsTyping"; 
    
   // Attributes ----------------------------------------------------
   CardLayout mainLayout = new CardLayout();
   JPanel mainPanel = new JPanel(mainLayout);

   JPanel loginPanel = new JPanel(new BorderLayout());
   JTextField loginField = new JTextField();
   JLabel loginLabel = new JLabel("Welcome to the chat!", JLabel.CENTER);
   
   TitledBorder title;
   JTextArea messages = new JTextArea();
   JScrollPane scroll = new JScrollPane(messages);
   JTextField input = new JTextField();
   JComboBox topics = new JComboBox();
   JList users = new JList();
   JScrollPane userScroll = new JScrollPane(users);
   
   ChatClient client;
   
   HashMap isTyping = new HashMap();
   
   // Constructors --------------------------------------------------
   public ChatGUI()
      throws RemoteException
   {
      // Setup GUI
      getContentPane().add("Center", mainPanel);
      mainPanel.add("Login", loginPanel);
      
      loginPanel.add("North", loginField);
      loginPanel.add("Center", loginLabel);
      loginPanel.setBackground(loginField.getBackground());
      loginField.setBorder(BorderFactory.createTitledBorder("Enter your name"));
      
      title = BorderFactory.createTitledBorder("Welcome to the chat!");
      title.setTitleJustification(TitledBorder.CENTER);
      scroll.setBorder(title);
      scroll.setBackground(messages.getBackground());
      messages.setEnabled(false);
      messages.setDisabledTextColor(getContentPane().getForeground());
      input.setBorder(BorderFactory.createTitledBorder("Enter message"));
      userScroll.setBorder(BorderFactory.createTitledBorder("Users"));
      userScroll.setBackground(users.getBackground());
      
      JPanel chatGui = new JPanel(new BorderLayout());
      chatGui.add("North", topics);
      chatGui.add("Center",scroll);
      chatGui.add("South",input);
      chatGui.add("East",userScroll);
      
      mainPanel.add("Chat", chatGui);
      
      loginField.addActionListener(this);
      input.addActionListener(this);
      topics.addActionListener(this);
      
      // IsTyping renderer
      final ListCellRenderer renderer = users.getCellRenderer();
      users.setCellRenderer(new ListCellRenderer()
      {
         public Component getListCellRendererComponent(JList list,
                                                         Object value,
                                                         int index,
                                                         boolean isSelected,
                                                         boolean cellHasFocus)
         {
            Component c = renderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
            if (isTyping.get(value.toString()) != null)
               c.setBackground(MetalLookAndFeel.getControlShadow());
            
            return c;
         }
      });
      
      // IsTyping message publisher
      input.addKeyListener(new KeyAdapter()
      {
         public void keyPressed(KeyEvent e)
         {
            if (input.getText().equals(""))
            {
               sendMessage(new Message(client.getClientInfo().getName(), TYPING, null));
            }
         }
      });
   }

   // MessageReceiver implementation --------------------------------
   public void handleMessage(Message message)
   {
      if (message.getType().equals(Message.TEXT))
      {
         String msg;
         if (message.getSender().equals(Message.SYSTEM))
         {
            msg = (String)message.getContent();
            users.repaint();
         } else
         {
            // Normal message
            msg = message.getSender()+": "+message.getContent();
   
            // Reset typing
            isTyping.remove(message.getSender());
            users.repaint();
         }
         messages.append(msg+"\n");
         messages.setCaretPosition(messages.getText().length());
      } else if (message.getType().equals(Message.GREETING))
      {
         title.setTitle(message.getContent().toString());
         scroll.repaint();
      } else if (message.getType().equals(TYPING))
      {
         // Mark that this user is typing
         isTyping.put(message.getSender(), message.getSender());
   
         // Repaint user list
         users.repaint();
      }
   }
   
   // ActionListener implementation ---------------------------------
   public void actionPerformed(ActionEvent e)
   {
      if (e.getSource() == loginField) // Login name entered
      {
         // Register with server
         try
         {
            client = new ChatClient();
            client.addMessageReceiver(this);
            
            client.login(loginField.getText());
            
            topics.setModel(client.getTopics());
            
            mainLayout.show(mainPanel, "Chat");
         } catch (IOException exc)
         {
            error(exc);
         }
         
         // Reset input field
         loginField.setText("");
      } else if (e.getSource() == input) // Send chat message
      {
         // Send message
         final String msg = input.getText();
         // Use a new thread to minimize lag
         SwingUtilities.invokeLater(new Runnable()
         {
            public void run()
            {
               sendMessage(new Message(client.getClientInfo().getName(), Message.TEXT, msg));
            }
         });
         
         // Reset input field
         input.setText("");
      } else if (e.getSource() == topics)
      {
         try
         {
            client.subscribe(((TopicInfo)topics.getSelectedItem()));
            users.setModel(client.getUsers());
            
            handleMessage(new Message(Message.SYSTEM, Message.TEXT, ((TopicInfo)topics.getSelectedItem()).getDescription()));
         } catch (IOException exc)
         {
            error(exc);
         }
      }

   }

   
   // Applet overrides ----------------------------------------------
   public void destroy()
   {
      try
      {
         if (client != null)
            client.logout();
      } catch (IOException exc)
      {
         error(exc);
      }
   }

   // Protected -----------------------------------------------------
   protected void sendMessage(Message message)
   {
      try
      {
         client.publishMessage(message);
      } catch (IOException exc)
      {
         error(exc);
      }
   }
    
   protected void error(Exception e)
   {
      client = null;
      loginLabel.setText(e.getMessage());
      e.printStackTrace();
      mainLayout.show(mainPanel, "Login");
      
      input.setText("");
   }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级精品电影久久久 | 欧美肥大bbwbbw高潮| 成人黄色在线看| 加勒比av一区二区| 久久99精品久久久久| 捆绑调教美女网站视频一区| 日本不卡视频在线| 日本不卡一区二区三区| 日本人妖一区二区| 老司机精品视频一区二区三区| 麻豆视频观看网址久久| 国内精品国产三级国产a久久| 看片的网站亚洲| 国产精品资源在线看| 成人午夜电影久久影院| 99r国产精品| 欧美视频在线观看一区二区| 欧美日韩在线亚洲一区蜜芽| 91麻豆精品91久久久久久清纯| 欧美一区二区三区影视| 337p粉嫩大胆色噜噜噜噜亚洲| 26uuu久久综合| 欧美国产成人在线| 亚洲免费在线视频一区 二区| 亚洲一区免费在线观看| 青青草成人在线观看| 国模无码大尺度一区二区三区| 成人一区二区视频| 色噜噜狠狠色综合欧洲selulu| 欧美日本高清视频在线观看| 欧美xxxxxxxx| 国产精品的网站| 亚洲va在线va天堂| 久久99精品久久久久久动态图| 波多野结衣中文字幕一区二区三区| 色综合久久精品| 欧美一卡二卡三卡| 国产精品久久久久桃色tv| 亚洲午夜激情av| 国产一区欧美一区| 色综合久久久网| 2024国产精品视频| 亚洲激情中文1区| 韩国v欧美v日本v亚洲v| 91同城在线观看| 日韩精品一区二区三区swag| 日本一区二区免费在线观看视频| 夜夜精品视频一区二区| 精品一区二区国语对白| 日本高清无吗v一区| 精品粉嫩超白一线天av| 亚洲精品中文在线观看| 精彩视频一区二区三区 | 亚洲欧美在线高清| 免费看日韩精品| 91亚洲国产成人精品一区二三| 欧美一级国产精品| 亚洲日穴在线视频| 国产乱子轮精品视频| 欧美久久久久久久久| 中文字幕一区二区三区蜜月| 精品一区免费av| 欧美三级日韩在线| 国产精品国产成人国产三级| 另类欧美日韩国产在线| 欧美在线观看视频在线| 国产欧美一区二区三区在线老狼| 三级欧美在线一区| 91视频观看免费| 国产日韩综合av| 蜜臀av性久久久久av蜜臀妖精| 91免费看`日韩一区二区| 久久久久久99久久久精品网站| 亚洲成a人片综合在线| av爱爱亚洲一区| 久久久久久久久久久久久女国产乱 | 欧美日韩一区二区在线观看| 国产精品无码永久免费888| 精品伊人久久久久7777人| 欧美欧美欧美欧美| 一区二区高清视频在线观看| 成人高清免费观看| 久久久www成人免费毛片麻豆| 日韩av电影一区| 欧美天堂一区二区三区| 亚洲精品免费一二三区| bt7086福利一区国产| 日本一区二区三区免费乱视频| 精品在线播放免费| 欧美zozozo| 激情综合色播激情啊| 日韩小视频在线观看专区| 偷偷要91色婷婷| 欧美视频在线观看一区| 亚洲一区视频在线观看视频| 欧美在线999| 一区二区欧美在线观看| 91国内精品野花午夜精品| 亚洲三级电影全部在线观看高清| 99re这里都是精品| 亚洲视频1区2区| 99vv1com这只有精品| 亚洲天堂精品在线观看| 色综合天天综合网天天狠天天| 中文字幕一区二区不卡 | 中文字幕日韩av资源站| 成人app软件下载大全免费| 国产精品久久久一本精品| 99久久99久久免费精品蜜臀| 一色屋精品亚洲香蕉网站| 91欧美一区二区| 亚洲成人在线网站| 69堂亚洲精品首页| 麻豆国产91在线播放| 日韩精品专区在线影院重磅| 久草这里只有精品视频| 久久久激情视频| 成人精品国产免费网站| 亚洲乱码国产乱码精品精可以看| 91国偷自产一区二区开放时间 | 国产三级欧美三级| 成人97人人超碰人人99| 亚洲精品视频在线观看免费| 日本精品裸体写真集在线观看| 亚洲亚洲人成综合网络| 日韩一区二区三区精品视频| 黄色小说综合网站| 国产精品久久久久久久久果冻传媒 | 日本成人在线网站| 欧美精品一区二区在线观看| 国产精品自拍网站| 亚洲色图制服丝袜| 欧美挠脚心视频网站| 国产一区在线观看麻豆| 日韩理论片在线| 91麻豆精品国产91久久久更新时间 | 岛国精品一区二区| 亚洲欧美日韩国产综合| 欧美一区二区黄色| 床上的激情91.| 一区二区三区四区国产精品| 3d成人动漫网站| 国产99久久久精品| 一区二区三区91| www日韩大片| 色综合久久久久综合体桃花网| 亚洲成人免费电影| 国产日产欧美一区| 欧美性欧美巨大黑白大战| 麻豆国产一区二区| 综合久久久久综合| 欧美丰满少妇xxxxx高潮对白| 国产精品一二三区| 亚洲成人一区在线| 欧美激情中文字幕一区二区| 精品视频一区二区不卡| 福利一区福利二区| 日韩和欧美一区二区| 国产精品久久精品日日| 欧美一级日韩免费不卡| 成人黄色电影在线| 日本不卡一二三| 亚洲免费观看在线视频| 2020国产精品| 欧美日韩国产片| 成人污视频在线观看| 蜜臀av性久久久久蜜臀av麻豆| 综合久久久久久久| 久久一二三国产| 欧美精品视频www在线观看| 成人高清视频在线观看| 精品一区二区在线看| 亚洲一区二区av电影| 中文字幕不卡在线播放| 精品久久久久av影院| 欧美日韩国产片| 91在线视频18| 成人午夜又粗又硬又大| 久久精品久久99精品久久| 亚洲一级二级在线| 国产精品国产三级国产三级人妇| 日韩精品一区二区在线观看| 欧美在线你懂得| 91蝌蚪国产九色| 国产成人亚洲精品狼色在线 | 91精品在线免费| 欧美色图天堂网| 色婷婷av一区二区三区之一色屋| 国产成人av福利| 久久99精品国产麻豆不卡| 婷婷丁香激情综合| 亚洲自拍偷拍麻豆| 亚洲免费av观看| 国产精品久久久久久久久免费樱桃| 久久蜜臀精品av| 精品国产精品网麻豆系列| 日韩一区二区免费在线电影| 欧美精品亚洲一区二区在线播放| 欧美色综合天天久久综合精品| 欧美视频一区二区在线观看|