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

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

?? player.java

?? A client/server application that implements the game of BINGO. This example broadcasts information v
?? JAVA
字號:
package bingo.player;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.rmi.*;import java.net.*;import bingo.shared.*;public class Player extends JPanel		    implements ActionListener,			       ItemListener,			       BallListener {    protected PlayerParameters params;    protected static boolean DEBUG = false;    protected ControlPane controlPane;    protected GameStatusLabel gameStatusLabel;    protected LightBoardPane lightBoardPane;    protected JCheckBox beepButton;    protected static int SMALLPAD = 5;    protected static int BIGPAD = 20;    static String register = "Join next game";    static char registerKey = 'j';    static String clear = "Reset";    static char clearKey = 'r';    static String beep = "Beep to announce new balls";    static char beepKey = 'b';    static String gameStatusTitle = "Game Status";    static String windowTitle = "BINGO Player";    private static Toolkit toolkit;    Registrar registrar;    int numCardWindows = 0;    CardWindow[] cardWindows = new CardWindow[3];    protected Ticket ticket;    protected PlayerQueue playerQueue;    public Player() {	super(false);	params = new PlayerParameters();	playerQueue = new PlayerQueue(this);	controlPane = new ControlPane(this);        // status from the game	JPanel statusPane = new JPanel(false);	statusPane.setBorder(		BorderFactory.createTitledBorder(		    gameStatusTitle));	statusPane.setLayout(new BoxLayout(statusPane, BoxLayout.Y_AXIS));        gameStatusLabel = new GameStatusLabel();	gameStatusLabel.setAlignmentX(0.0f);	statusPane.add(gameStatusLabel);        lightBoardPane = new LightBoardPane(0);	lightBoardPane.setAlignmentX(0.0f);	statusPane.add(lightBoardPane);	//Choose where the app beeps whenever a ball arrives.	beepButton = new JCheckBox(beep);	beepButton.setSelected(params.getShouldBeep());	beepButton.setMnemonic(beepKey);	beepButton.addItemListener(this);	beepButton.setAlignmentX(0.0f); 	statusPane.add(beepButton);	setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));	controlPane.setAlignmentX(0.0f); //left align        add(controlPane);	statusPane.setAlignmentX(0.0f); //left align        add(statusPane);	//XXX hack to turn off old-style event handling:	//XXX add any kind of listener to this component	//XXX 1.1 only, I think	addContainerListener(new ContainerAdapter(){});	// Get current status.	playerQueue.postEvent(new StatusRequestEvent(this));	// Initialize the toolkit.	toolkit = Toolkit.getDefaultToolkit();    }    /* Called from AWT event dispatch thread. */    public void itemStateChanged(ItemEvent e) {	if (e.getStateChange() == ItemEvent.SELECTED) {	    params.setShouldBeep(true);	} else {	    params.setShouldBeep(false);	}    }    /* Called from AWT event dispatch thread. */    public void actionPerformed(ActionEvent e) {        String factoryName = null;	String command = e.getActionCommand();        if (command == register) {	    params.setNames(controlPane.nameField.getText(),	                    controlPane.hostField.getText());	    //We didn't used to do the following, since seed isn't	    //a saved property, but the alternative (doing	    //invokeAndWait when you really need the value)	    //might be prone to deadlock.	    params.setSeed(Long.parseLong(controlPane.seedField.getText()));	    playerQueue.postEvent(new RegisterEvent(this));	} else if (command == clear) {	    clearGame();        } else {	    int numCards;	    try {		numCards = Integer.parseInt(command);	        params.setNumCards(numCards);	    } catch (Throwable exc) {		//Ignore the action since we don't understand it.	    }	}    }    /* Can be invoked from any thread. */    public void showServerStatus(String message) {	if (gameStatusLabel != null) {	    final String msg = message; //so we can access it in inner class	    SwingUtilities.invokeLater(new Runnable() {		    public void run() {	    		gameStatusLabel.setText(msg);		    }		});	} else {	    System.err.println("Player.gameStatusLabel is null, "			       + "so couldn't say: "			       + message);	} 	if (DEBUG) {	    System.out.println("showServerStatus: " + message);	}    }    /**     * BallListener method.      */    public void noMoreBalls() {	controlPane.gameOver();  //safe from any thread	showServerStatus("Game Over."); //safe from any thread    }    /**     * BallListener method.     */    public void ballCalled(BingoBall b) {	final BingoBall ball = b; //for use in inner class	if (ball.getNumber() != BingoBall.GAME_OVER) {	    SwingUtilities.invokeLater(new Runnable() {	        public void run() {                    lightBoardPane.displayNewBall(ball);	            if (params.getShouldBeep()) {			toolkit.beep();		    }	        }	    });	}    }    /* Called from action event handler (AWT event dispatch thread). */    private void clearGame() {	ticket = null;	for (int i = 0; i < numCardWindows; i++) {	    cardWindows[i].dispose();	}	controlPane.reset();	lightBoardPane.clear();    }    /* Called from player queue thread. */    void handleStatusRequestEvent(StatusRequestEvent event) {	lookUpRegistrar(params.getHostname()); 	if (registrar != null) {	    String statusText = "";	    try {                statusText = registrar.whatsHappening();	    } catch (java.rmi.ConnectException exc) {		if (DEBUG) {		    System.err.println("Not connected to Bingo server.");		    System.err.println("registrar = " + registrar);		}		//XXX Update status?  We aren't connected to the Bingo		//XXX server, but rmiregistry is running.	    } catch (Exception exc) {		System.err.println("Unexpected exception on status request.");                exc.printStackTrace();		return;	    }	    showServerStatus(statusText);  //safe from any thread	}    }    /* Can be safely called from any thread. */    private void lookUpRegistrar(String host) {	if (registrar != null) 	    return;	try {	    registrar = (Registrar)Naming.lookup("//"	                + host + "/Registrar");	} catch (java.rmi.NotBoundException exc) {	    if (DEBUG) {	        System.err.println("Couldn't find BINGO Server running on host "			           + host + ".");	        System.err.println("RMI seems to be running fine."); 	    }	    //XXX Advise them to start up BINGO server.	} catch (java.rmi.UnmarshalException exc) {	    System.err.println("Unmarshal exception on host "			       + host + ".");	    System.err.println("Try recompiling everything and starting over?");	    System.err.println("registrar = " + registrar);	    //XXX Advise the user?  Fatal error?	} catch (java.rmi.ConnectException exc) {	    if (DEBUG) {	        System.err.println("RMI isn't running on "				   + host + ".");	 	System.err.println("Or maybe it is, but it "				   + "started after this program.");	    }	    //XXX Update status?  We aren't connected to the Bingo	    //XXX server, but rmiregistry is running.  I think.	} catch (java.rmi.UnknownHostException exc) {	    System.err.println("Unknown host: "			       + host);	    //XXX Update status?  Ask user to enter another host and retry?	} catch (java.rmi.ConnectIOException exc) {	    System.err.println("Couldn't get to host "			       + host + ".");	    //XXX Update status?  We might have had a network glitch.	} catch (Exception exc) {	    System.err.println("Unexpected exception when "			       + "trying to find registrar.");	    System.err.println("Exception type: "			       + exc.toString());            exc.printStackTrace();	}    }    /* Called from player queue thread. */    void handleRegisterEvent(RegisterEvent event) {	if (registrar == null) {	    lookUpRegistrar(params.getHostname()); 	}	if (registrar == null) {	    return;  //XXX should do this with an exception instead.	}	if (ticket == null) {	    long seed = params.getSeed(); 	    lookUpRegistrar(params.getHostname()); 	    //Get the ticket.	    try {	        ticket = registrar.mayIPlay(params.getName(),			   	            params.getNumCards(),					    seed);	    } catch (java.rmi.ConnectException exc) {	        if (DEBUG) {	            System.err.println("Not connected to Bingo server.");	            System.err.println("registrar = " + registrar);	        }	        //XXX Update status?  We aren't connected to the Bingo	        //XXX server, but rmiregistry is running.		return;	    } catch (Exception exc) {	        System.err.println("Unexpected exception on register attempt.");	        exc.printStackTrace();	        //XXX Update status?  		return;	    }	    //React to registration results.	    try {	        if (ticket.ID != Ticket.DENIED) {		    numCardWindows = ticket.cards.length;		    final Player player = this;		    SwingUtilities.invokeLater(new Runnable() {			    public void run() {			        controlPane.didRegister();				repaint();				//XXX Should delay the following				//XXX (so there's feedback when you				//XXX register)?		                for (int i = 0; i < numCardWindows; i++) {			            cardWindows[i] = new				            CardWindow(ticket.cards[i],					               player);			            cardWindows[i].pack();			            cardWindows[i].setVisible(true);		                }			    }		        });        	    try {	    	        new BallListenerThread(this).start();        	    } catch (java.io.IOException e) {	                if (DEBUG) {	                    System.err.println("IOException on "			                       + "BallListenerThread "					       + "creation/startup.");        	        }		    }	        } else { 		    showServerStatus(ticket.message);		    ticket = null;	        }	    } catch (NullPointerException exc) {	        System.err.println("NullPointerException; probably "			           + "ticket was null");	    } catch (Exception exc) {	        System.err.println("Unexpected exception on register attempt.");	        exc.printStackTrace();	    }	}    }    /* Called from player queue thread. */    void handleIWonEvent(IWonEvent event) {	if (registrar == null) {            showServerStatus("This player isn't connected to a server: "                             + "can't tell a server you won.");	    return;        }	try {	    Answer a = registrar.BINGO(ticket.ID, event.getCard());	    if (a.didIWin) {                showDialog(event.getCardWindow(),		 	   "You won!");            } else {		showServerStatus(a.message);                showDialog(event.getCardWindow(),                           "You didn't win.");            }        } catch (RemoteException e) {	    //...show status?	    System.err.println("RMI Exception when "			       + "informing server of win.");	}    }    protected void showDialog(CardWindow cw, String status) {	final String statusText = status;	final CardWindow cardWindow = cw;	SwingUtilities.invokeLater(new Runnable() {	    public void run() {		cardWindow.showStatusDialog(statusText);	    }	});    }    /**      * Requests that handleIWonEvent be called from     * player queue thread.     */    void IWon(CardWindow cw) {	playerQueue.postEvent(new IWonEvent(this, cw));    }    /*     * Called from either player queue thread or AWT event dispatch     * thread, as appropriate.     * XXX Can be cleaner in 1.2.     */    protected void processEvent(AWTEvent event) {        if (event instanceof StatusRequestEvent) {            if (DEBUG) {                System.out.println("Player processEvent received StatusRequestEvent");            }                  handleStatusRequestEvent((StatusRequestEvent)event);        } else if (event instanceof RegisterEvent) {            if (DEBUG) {                System.out.println("Player processEvent received RegisterEvent");            }                  handleRegisterEvent((RegisterEvent)event);        } else if (event instanceof IWonEvent) {             if (DEBUG) {                System.out.println("Player processEvent received IWonEvent");            }                  handleIWonEvent((IWonEvent)event);        } else {	    super.processEvent(event);	}    }    public static void main(String[] args) {	JFrame frame = new JFrame(windowTitle);	frame.addWindowListener(new WindowAdapter() {		public void windowClosing(WindowEvent e) {		    System.exit(0);	//XXX		}	    });	Player player = new Player();	frame.getContentPane().add("Center", player);	frame.pack();	frame.setVisible(true);    }    public static void fatalError(String message, Exception e) {        e.printStackTrace();        System.err.println(message);        System.err.println("Exiting.....");        System.exit(-1);    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成a人亚洲精| 日韩av中文在线观看| 欧美mv日韩mv| 欧美一区二区三区男人的天堂| 色狠狠色噜噜噜综合网| 成人97人人超碰人人99| www.亚洲在线| 91在线视频播放| 91国偷自产一区二区使用方法| av在线综合网| 欧美又粗又大又爽| 欧美日韩国产天堂| 欧美精品1区2区| 日韩精品一区二区三区视频播放| 日韩欧美电影一二三| 精品福利二区三区| 欧美激情一区二区三区在线| 成人欧美一区二区三区白人| 一区二区三区在线免费观看| 亚洲综合色在线| 午夜电影网亚洲视频| 精品一区二区综合| 成人国产精品免费| 欧美自拍丝袜亚洲| 久久综合九色综合欧美98| 国产亚洲自拍一区| 亚洲在线视频网站| 免费xxxx性欧美18vr| 国产不卡一区视频| 欧美图区在线视频| www激情久久| 一区二区三区在线播| 日本不卡免费在线视频| 国产一区二区三区精品视频| 色天天综合色天天久久| 日韩欧美一区二区视频| 中文字幕高清不卡| 视频一区视频二区中文字幕| 国产成人亚洲综合a∨婷婷| 色综合久久中文字幕综合网| 日韩精品中文字幕在线不卡尤物 | 成人av中文字幕| 91久久一区二区| 精品国产一二三区| 一区二区三区毛片| 国产精品一区二区果冻传媒| 91精品福利在线| 国产婷婷精品av在线| 午夜久久电影网| 成人av免费网站| 精品久久人人做人人爰| 亚洲午夜私人影院| av午夜一区麻豆| 久久综合色鬼综合色| 亚洲国产精品人人做人人爽| av色综合久久天堂av综合| 精品久久久久久久久久久久久久久| 亚洲视频精选在线| 成人亚洲精品久久久久软件| 欧美成人性福生活免费看| 亚洲一区在线观看免费观看电影高清| 国产.欧美.日韩| 精品国产区一区| 久久精品av麻豆的观看方式| 在线91免费看| 亚洲国产一区视频| 久久九九国产精品| 免费在线观看一区二区三区| 欧美性大战久久久久久久蜜臀| 成人免费一区二区三区在线观看| 国产成人免费视频| 久久久一区二区| 美女视频黄a大片欧美| 欧美顶级少妇做爰| 香蕉成人伊视频在线观看| 欧美在线观看18| 亚洲国产日产av| 欧美视频第二页| 亚洲综合激情另类小说区| 色94色欧美sute亚洲13| 亚洲裸体xxx| 欧美色图在线观看| 亚洲超丰满肉感bbw| 欧美日韩中字一区| 首页欧美精品中文字幕| 日韩欧美久久久| 极品少妇xxxx精品少妇| 久久精品人人爽人人爽| 国产成a人亚洲精| 亚洲欧洲另类国产综合| 91官网在线免费观看| 亚洲小说欧美激情另类| 日韩视频免费直播| 国产一区在线不卡| 中文字幕在线观看不卡| 在线一区二区观看| 日韩二区三区在线观看| 久久夜色精品国产欧美乱极品| 国产不卡一区视频| 亚洲综合一二三区| 日韩精品在线网站| 粉嫩13p一区二区三区| 国内精品自线一区二区三区视频| 国产日韩欧美一区二区三区乱码| www.99精品| 日本在线播放一区二区三区| 久久亚洲精精品中文字幕早川悠里 | 日韩你懂的在线观看| 国产麻豆91精品| 一区二区三区欧美日韩| 日韩美女视频一区二区在线观看| 成人一区二区在线观看| 亚洲在线免费播放| 久久久久国产精品人| 在线看不卡av| 国产一区二区三区观看| 亚洲国产精品久久不卡毛片| 精品乱人伦小说| 色又黄又爽网站www久久| 轻轻草成人在线| 亚洲欧美在线观看| 精品久久久网站| 欧美无砖专区一中文字| 国v精品久久久网| 蜜臀久久久久久久| 一区二区免费在线| 国产精品网站在线播放| 日韩一区二区三区在线观看| 日本高清视频一区二区| 国产精品亚洲专一区二区三区 | 欧美一二三区在线| 91麻豆6部合集magnet| 国产盗摄视频一区二区三区| 亚洲不卡av一区二区三区| 国产精品久久久久一区| 26uuu精品一区二区三区四区在线| 欧洲精品在线观看| 99麻豆久久久国产精品免费优播| 欧美性色黄大片| 99精品视频一区| 国产精品中文字幕欧美| 久久国产免费看| 美女任你摸久久| 亚洲成av人**亚洲成av**| 亚洲激情男女视频| 亚洲视频每日更新| 亚洲精品午夜久久久| 国产精品久久久久久久浪潮网站| 久久久亚洲综合| 欧美精品一区视频| 久久午夜电影网| 精品国产一二三| ww亚洲ww在线观看国产| 久久久噜噜噜久久人人看| 精品成人佐山爱一区二区| 日韩精品中文字幕一区| 日韩精品一区国产麻豆| 精品蜜桃在线看| 久久久精品免费网站| 久久久久久久综合色一本| 精品粉嫩aⅴ一区二区三区四区| 欧美刺激脚交jootjob| 精品福利一区二区三区免费视频| 精品国产乱码久久久久久久| 欧美精品一区二区三区蜜臀| 久久嫩草精品久久久久| 国产日韩欧美制服另类| 国产精品理论在线观看| 亚洲色大成网站www久久九九| 亚洲免费在线电影| 首页国产丝袜综合| 九九**精品视频免费播放| 国产老妇另类xxxxx| 成年人国产精品| 在线观看不卡一区| 日韩女优电影在线观看| 国产日韩精品一区| 亚洲美女视频在线| 日本成人中文字幕| 国产成人激情av| 91国偷自产一区二区三区观看| 欧美日本在线播放| 欧美xxx久久| 最新国产成人在线观看| 99久久综合狠狠综合久久| 欧美色成人综合| 久久综合九色综合97婷婷女人| 日韩毛片精品高清免费| 日韩国产成人精品| 丁香婷婷综合网| 欧美日韩亚州综合| 日本一区二区在线不卡| 性做久久久久久免费观看| 国产成人在线免费| 6080日韩午夜伦伦午夜伦| 国产亚洲va综合人人澡精品| 亚洲午夜久久久久久久久电影网| 蜜臀av一区二区在线免费观看| aa级大片欧美| 日韩精品一区二区在线|