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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? clientgui.java

?? java的一些教程 大家看看,很有用的
?? JAVA
字號:
// ClientGUI.java
// ClientGUI provides a GUI for sending and receiving 
// chat messages using a MessageManager.
package com.deitel.messenger;

// Java core packages
import java.awt.*;
import java.awt.event.*;
import java.util.*;

// Java extension packages
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.text.*;

public class ClientGUI extends JFrame {
   
   // JLabel for displaying connection status
   private JLabel statusBar;
   
   // JTextAreas for displaying and inputting messages   
   private JTextArea messageArea;
   private JTextArea inputArea;   
    
   // Actions for connecting and disconnecting MessageManager 
   // and sending messages
   private Action connectAction;
   private Action disconnectAction;
   private Action sendAction;

   // userName to add to outgoing messages
   private String userName = "";
   
   // MessageManager for communicating with server
   MessageManager messageManager;
   
   // MessageListener for receiving new messages
   MessageListener messageListener;
 
   // ClientGUI constructor
   public ClientGUI( MessageManager manager )
   {      
      super( "Deitel Messenger" );      
      
      messageManager = manager;
      
      messageListener = new MyMessageListener();
      
      // create Actions
      connectAction = new ConnectAction();
      disconnectAction = new DisconnectAction();
      disconnectAction.setEnabled( false );
      sendAction = new SendAction();
      sendAction.setEnabled( false );

      // set up File menu
      JMenu fileMenu = new JMenu ( "File" );   
      fileMenu.setMnemonic( 'F' );
      fileMenu.add( connectAction );
      fileMenu.add( disconnectAction );

      // set up JMenuBar and attach File menu
      JMenuBar menuBar = new JMenuBar();
      menuBar.add ( fileMenu );  
      setJMenuBar( menuBar );     
      
      // set up JToolBar
      JToolBar toolBar = new JToolBar();
      toolBar.add( connectAction );
      toolBar.add( disconnectAction );   
            
      // create JTextArea for displaying messages  
      messageArea = new JTextArea( 15, 15 );      
      
      // disable editing and wrap words at end of line
      messageArea.setEditable( false );
      messageArea.setLineWrap( true );
      messageArea.setWrapStyleWord( true );
      
      JPanel panel = new JPanel();
      panel.setLayout( new BorderLayout( 5, 5 ) );
      panel.add( new JScrollPane( messageArea ), 
         BorderLayout.CENTER );
   
      // create JTextArea for entering new messages
      inputArea = new JTextArea( 3, 15 );
      inputArea.setLineWrap( true );
      inputArea.setWrapStyleWord( true );
      inputArea.setEditable( false );
      
      // map Enter key in inputArea to sendAction
      Keymap keyMap = inputArea.getKeymap();
      KeyStroke enterKey = KeyStroke.getKeyStroke( 
         KeyEvent.VK_ENTER, 0 );
      keyMap.addActionForKeyStroke( enterKey, sendAction );
     
      // lay out inputArea and sendAction JButton in BoxLayout 
      // and add Box to messagePanel
      Box box = new Box( BoxLayout.X_AXIS );
      box.add( new JScrollPane( inputArea ) );
      box.add( new JButton( sendAction ) );
      
      panel.add( box, BorderLayout.SOUTH );
      
      // create statusBar JLabel with recessed border
      statusBar = new JLabel( "Not Connected" );
      statusBar.setBorder( 
         new BevelBorder( BevelBorder.LOWERED ) );

      // lay out components
      Container container = getContentPane();
      container.add( toolBar, BorderLayout.NORTH );
      container.add( panel, BorderLayout.CENTER );
      container.add( statusBar, BorderLayout.SOUTH );
      
      // disconnect and exit if user closes window
      addWindowListener(
      
         new WindowAdapter() {
            
            // disconnect MessageManager when window closes
            public void windowClosing( WindowEvent event ) 
            {
               // disconnect from chat server
               try {
                  messageManager.disconnect( messageListener );
               }
               
               // handle exception disconnecting from server
               catch ( Exception exception ) {
                  exception.printStackTrace();
               }
               
               System.exit( 0 );
               
            } // end method windowClosing

         } // end WindowAdapter inner class
      );
      
   } // end ClientGUI constructor
   
   // Action for connecting to server
   private class ConnectAction extends AbstractAction {
      
      // configure ConnectAction 
      public ConnectAction() 
      {
         putValue( Action.NAME, "Connect" );
         putValue( Action.SMALL_ICON, new ImageIcon( 
            ClientGUI.class.getResource( 
               "images/Connect.gif" ) ) );
         putValue( Action.SHORT_DESCRIPTION,  
            "Connect to Server" );
         putValue( Action.LONG_DESCRIPTION, 
            "Connect to server to send Instant Messages" );
         putValue( Action.MNEMONIC_KEY, new Integer( 'C' ) );
      }
      
      // connect to server
      public void actionPerformed( ActionEvent event ) 
      {          
         // connect MessageManager to server
         try {    
            
            // clear messageArea
            messageArea.setText( "" );         
            
            // connect MessageManager and register MessageListener
            messageManager.connect( messageListener );
            
            // listen for disconnect notifications
            messageManager.setDisconnectListener( 
               new DisconnectHandler() );

            // get desired userName
            userName = JOptionPane.showInputDialog( 
               ClientGUI.this, "Please enter your name: " );

            // update Actions, inputArea and statusBar
            connectAction.setEnabled( false );
            disconnectAction.setEnabled( true );
            sendAction.setEnabled( true );
            inputArea.setEditable( true );
            inputArea.requestFocus();  
            statusBar.setText( "Connected: " + userName );   

            // send message indicating user connected
            messageManager.sendMessage( userName, userName + 
               " joined chat" );
            
         } // end try
         
         // handle exception connecting to server
         catch ( Exception exception ) {
            JOptionPane.showMessageDialog( ClientGUI.this,
               "Unable to connect to server.", "Error Connecting",
               JOptionPane.ERROR_MESSAGE );

            exception.printStackTrace();
         }
         
      }  // end method actionPerformed   
      
   } // end ConnectAction inner class

   // Action for disconnecting from server
   private class DisconnectAction extends AbstractAction {
      
      // configure DisconnectAction
      public DisconnectAction()
      {
         putValue( Action.NAME, "Disconnect" );
         putValue( Action.SMALL_ICON, new ImageIcon( 
            ClientGUI.class.getResource( 
               "images/Disconnect.gif" ) ) );
         putValue( Action.SHORT_DESCRIPTION, 
            "Disconnect from Server" );
         putValue( Action.LONG_DESCRIPTION, 
            "Disconnect to end Instant Messaging session" );
         putValue( Action.MNEMONIC_KEY, new Integer( 'D' ) );
      }

      // disconnect from server
      public void actionPerformed( ActionEvent event ) 
      { 
         // disconnect MessageManager from server
         try {
            
            // send message indicating user disconnected
            messageManager.sendMessage( userName, userName + 
               " exited chat" );

            // disconnect from server and unregister 
            // MessageListener
            messageManager.disconnect( messageListener );            

            // update Actions, inputArea and statusBar
            sendAction.setEnabled( false );
            disconnectAction.setEnabled( false );
            inputArea.setEditable( false );
            connectAction.setEnabled( true );
            statusBar.setText( "Not Connected" );
            
         } // end try
         
         // handle exception disconnecting from server
         catch ( Exception exception ) {
            JOptionPane.showMessageDialog( ClientGUI.this,
               "Unable to disconnect from server.", 
               "Error Disconnecting", JOptionPane.ERROR_MESSAGE );

            exception.printStackTrace();
         }  
         
      } // end method actionPerformed
      
   } // end DisconnectAction inner class
   
   // Action for sending messages
   private class SendAction extends AbstractAction {
      
      // configure SendAction
      public SendAction()
      {
         putValue( Action.NAME, "Send" ) ;
         putValue( Action.SMALL_ICON, new ImageIcon( 
            ClientGUI.class.getResource( "images/Send.gif" ) ) );
         putValue( Action.SHORT_DESCRIPTION, "Send Message" );
         putValue( Action.LONG_DESCRIPTION, 
            "Send an Instant Message" );
         putValue( Action.MNEMONIC_KEY, new Integer( 'S' ) );      
      }
      
      // send message and clear inputArea
      public void actionPerformed( ActionEvent event ) 
      {
         // send message to server
         try {
            
            // send userName and text in inputArea
            messageManager.sendMessage( userName, 
               inputArea.getText() );

            inputArea.setText( "" );
         }

         // handle exception sending message
         catch ( Exception exception ) {
            JOptionPane.showMessageDialog( ClientGUI.this,
               "Unable to send message.", "Error Sending Message", 
               JOptionPane.ERROR_MESSAGE );            

            exception.printStackTrace();
         }                     
         
      } // end method actionPerformed
      
   } // end SendAction inner class
   
   // MyMessageListener listens for new messages from the
   // MessageManager and displays the messages in messageArea
   // using a MessageDisplayer.
   private class MyMessageListener implements MessageListener {

      // when new message received, display in messageArea
      public void messageReceived( String from, String message ) 
      {
         // append message using MessageDisplayer and invokeLater 
         // to ensure thread-safe access to messageArea
         SwingUtilities.invokeLater( 
            new MessageDisplayer( from, message ) );
      } 
      
   }  // end MyMessageListener inner class 
   
   // MessageDisplayer displays a new messaage by appending
   // the message to the messageArea JTextArea. This Runnable 
   // object should be executed only on the event-dispatch 
   // thread, as it modifies a live Swing component.
   private class MessageDisplayer implements Runnable {
      
      private String fromUser;
      private String messageBody;
      
      // MessageDisplayer constructor
      public MessageDisplayer( String from, String body )
      {
         fromUser = from;
         messageBody = body;
      }
      
      // display new message in messageArea
      public void run() 
      {
         // append new message
         messageArea.append( "\n" + fromUser + "> " + 
            messageBody );   

         // move caret to end of messageArea to ensure new 
         // message is visible on screen
         messageArea.setCaretPosition( 
            messageArea.getText().length() );                          
      }      
      
   } // end MessageDisplayer inner class   
   
   // DisconnectHandler listens for serverDisconnected messages
   // from the MessageManager and updates the user interface.
   private class DisconnectHandler implements DisconnectListener {
   
      // receive disconnect notifcation
      public void serverDisconnected( final String message ) 
      {
         // update GUI in thread-safe manner
         SwingUtilities.invokeLater( 

            new Runnable() {

               // update Actions, inputs and status bar
               public void run() 
               {               
                  sendAction.setEnabled( false );
                  disconnectAction.setEnabled( false );
                  inputArea.setEditable( false );
                  connectAction.setEnabled( true );
                  statusBar.setText( message );
               }
               
            } // end Runnable inner class
         );
         
      } // end method serverDisconnected  
   
   } // end DisconnectHandler inner class
}

/**************************************************************************
 * (C) Copyright 2001 by Deitel & Associates, Inc. and Prentice Hall.     *
 * All Rights Reserved.                                                   *
 *                                                                        *
 * DISCLAIMER: The authors and publisher of this book have used their     *
 * best efforts in preparing the book. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these books. The authors *
 * and publisher shall not be liable in any event for incidental or       *
 * consequential damages in connection with, or arising out of, the       *
 * furnishing, performance, or use of these programs.                     *
 *************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类小说综合欧美亚洲| www.日韩av| 国产不卡免费视频| 91九色最新地址| 欧美大度的电影原声| 国产精品久线在线观看| 日韩av一区二| 波波电影院一区二区三区| 91精品国产一区二区三区香蕉| 国产拍欧美日韩视频二区| 亚洲成a人v欧美综合天堂下载| 精品一区二区三区在线播放视频 | 国产精品乱码一区二三区小蝌蚪| 亚洲一区二区三区四区在线| 成人av资源网站| 26uuu国产电影一区二区| 午夜婷婷国产麻豆精品| jvid福利写真一区二区三区| 久久综合久色欧美综合狠狠| 日韩高清在线一区| 在线观看日韩高清av| 国产精品乱码一区二三区小蝌蚪| 国产综合成人久久大片91| 欧美日韩免费不卡视频一区二区三区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 欧美激情一区二区三区全黄| 看电影不卡的网站| 在线不卡中文字幕播放| 亚洲一区二区三区中文字幕在线| 成人激情免费视频| 国产性做久久久久久| 久久精品免费观看| 91精品国产综合久久小美女| 亚洲国产日韩一级| 欧美日韩一级片在线观看| 一区二区三区精品视频| 一本久久a久久精品亚洲| 中文字幕中文在线不卡住| 99re这里只有精品首页| 自拍偷拍亚洲激情| 色综合久久久久综合99| 亚洲精品国久久99热| 91精品1区2区| 午夜欧美视频在线观看| 欧美一卡二卡三卡| 激情综合色综合久久综合| 欧美白人最猛性xxxxx69交| 久久99久久99| 国产午夜精品一区二区| 成人看片黄a免费看在线| 中文字幕中文字幕在线一区| 在线一区二区视频| 日韩成人午夜电影| 久久久亚洲高清| 成人18视频在线播放| 一区二区三区四区五区视频在线观看 | 99精品欧美一区二区三区综合在线| 中文字幕欧美三区| 日本韩国精品在线| 日韩电影免费一区| 中文字幕第一区第二区| 欧美性猛交xxxx黑人交| 蜜桃一区二区三区在线| 国产情人综合久久777777| 在线亚洲+欧美+日本专区| 欧美aⅴ一区二区三区视频| 久久久不卡影院| 91蝌蚪porny| 麻豆精品视频在线观看视频| 欧美国产综合色视频| 欧美亚州韩日在线看免费版国语版| 图片区日韩欧美亚洲| 国产亚洲精品7777| 欧美日韩在线免费视频| 精品一区二区三区蜜桃| 亚洲欧美另类小说视频| 精品国产91久久久久久久妲己| 国产99久久久国产精品潘金| 亚洲国产精品人人做人人爽| 欧美不卡视频一区| 在线观看不卡一区| 国产麻豆一精品一av一免费| 一个色综合网站| 久久精品亚洲国产奇米99| 91久久久免费一区二区| 国产一区欧美日韩| 日欧美一区二区| 国产精品动漫网站| 欧美精品一区二区三区很污很色的 | 性欧美疯狂xxxxbbbb| 久久久国产精品麻豆| 欧美丰满一区二区免费视频| 成人毛片老司机大片| 国内精品伊人久久久久av一坑 | 日韩精品免费专区| 国产精品免费丝袜| 精品成人一区二区三区| 欧美怡红院视频| 99精品视频在线观看| 国产成人精品影视| 激情综合色综合久久综合| 午夜影视日本亚洲欧洲精品| 伊人婷婷欧美激情| 中文字幕一区二区视频| 久久久欧美精品sm网站| 日韩欧美在线网站| 欧美浪妇xxxx高跟鞋交| 欧美亚州韩日在线看免费版国语版| 波多野洁衣一区| 成人国产精品免费观看动漫 | 成人动漫一区二区| 国产成人高清视频| 久久99久久精品| 激情综合色综合久久综合| 蜜臀av在线播放一区二区三区| 午夜精品久久久久久| 亚洲高清一区二区三区| 亚洲综合小说图片| 亚洲国产一区在线观看| 亚洲美女视频在线观看| 亚洲三级电影全部在线观看高清| 日本一二三四高清不卡| 亚洲欧洲日产国产综合网| 日韩美女视频一区| 中文字幕一区二区三区乱码在线| 国产精品色一区二区三区| 国产精品美女久久福利网站| 国产精品久久久久久久浪潮网站| 国产精品麻豆一区二区| 亚洲天天做日日做天天谢日日欢 | 91精品国产乱码久久蜜臀| 欧美精品日韩精品| 日韩欧美中文一区二区| 久久亚洲捆绑美女| 国产精品女主播av| 一区二区三区在线免费观看 | 国产一区二区剧情av在线| 国产精品一区不卡| 不卡一区在线观看| 97精品电影院| 欧美日韩国产区一| 精品少妇一区二区三区在线视频| 久久久久久久av麻豆果冻| 日本一区二区三区电影| 亚洲欧美色综合| 亚洲二区在线视频| 极品尤物av久久免费看| 不卡一区中文字幕| 欧美精品久久一区二区三区| 精品国产污污免费网站入口| 国产精品青草综合久久久久99| 亚洲精品美国一| 久久91精品国产91久久小草| 99免费精品在线| 日韩亚洲欧美中文三级| 国产欧美日韩视频在线观看| 亚洲一区二区在线免费观看视频| 老司机精品视频线观看86| 成人丝袜高跟foot| 欧美日韩国产精选| 国产精品美女久久久久久久| 日韩影院在线观看| av在线综合网| 日韩亚洲欧美一区二区三区| 亚洲婷婷综合久久一本伊一区| 日韩不卡一二三区| 99国产精品久久久久久久久久久| 91精品国产综合久久久久久久| 国产精品久久久久久久久图文区| 亚洲va国产va欧美va观看| 成人黄色在线网站| 欧美xxxxxxxx| 一区二区三区日韩| 丰满岳乱妇一区二区三区| 91麻豆精品国产自产在线观看一区| 中文字幕高清不卡| 国产一区二区三区视频在线播放| 在线观看亚洲a| 亚洲欧洲成人自拍| 极品美女销魂一区二区三区 | xnxx国产精品| 亚洲成人综合在线| 91香蕉视频mp4| 久久精品人人爽人人爽| 蜜臀久久99精品久久久久久9| 一本色道亚洲精品aⅴ| 国产亚洲欧美在线| 蜜臀国产一区二区三区在线播放| 欧美三级视频在线| 亚洲美女视频一区| 成人网在线播放| 国产女人水真多18毛片18精品视频| 日韩成人av影视| 欧美日本在线视频| 伊人色综合久久天天人手人婷| 成人视屏免费看| 国产清纯在线一区二区www| 国产精品综合一区二区三区| 精品欧美黑人一区二区三区| 亚洲成a人片综合在线|