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

📄 gameroomlistwindow.java

📁 是一款国外的网络游戏平台的源码*不是类似浩方那种虚拟局域网技术
💻 JAVA
字号:
/*
 * Created on Mar 6, 2006
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package org.GTADS.client;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.IOException;
import java.util.Vector;

import javax.swing.BoxLayout;
import javax.swing.ScrollPaneConstants;

import org.GTADS.messenger.MessageAdapter;
import org.GTADS.protocol.MetaData;
import org.GTADS.usermanager.GameRoom;
import org.GTADS.usermanager.TranslateManager;
import org.GTADS.client.swing.*;

/**
 * @author sday
 * Will list Gamerooms on the server for users to join
 */
public class GameroomListWindow extends GTADSFrame implements ActionListener, MouseListener{
	private static GameroomListWindow instance;
	private TranslateManager locale = TranslateManager.getInstance();
	private GTADSList gameroomListBox;
	private GTADSScrollPane gameroomScrollPane;
	private GTADSButton joinButton;
	private GTADSButton cancelButton;
	private GTADSLabel gameName = new GTADSLabel();
	private GTADSLabel gameType = new GTADSLabel();
	private GTADSLabel gameUsers = new GTADSLabel();
	private GTADSLabel gameStatus = new GTADSLabel();
	Vector gameroomList = new Vector();
	Vector gameroomDisplayList = new Vector();
	
	public static GameroomListWindow getInstance(){
		if (instance == null){
			instance = new GameroomListWindow();
		}
		return instance;
	}
	
	public static void clearInstance(){
		if (instance != null){
			instance.hide();
			instance.dispose();
			instance = null;
		}
	}
	
	public GameroomListWindow(){
		this.setSize(700,300);
		this.setTitle("Game Listings");
		
		createGameListBox();
		createComponents();
		
		GTADSPanel mainPanel = new GTADSPanel();
		GTADSPanel panel1 = new GTADSPanel();
		GTADSPanel panel2 = new GTADSPanel();
		GTADSPanel infoPanel1 = new GTADSPanel();
		GTADSPanel infoPanel2 = new GTADSPanel();
		GTADSPanel infoPanel3 = new GTADSPanel();
		GTADSPanel infoPanel4 = new GTADSPanel();
		GTADSPanel panel3 = new GTADSPanel();
		
		mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
		panel1.setLayout(new FlowLayout(FlowLayout.LEFT));
		panel2.setLayout(new FlowLayout(FlowLayout.LEFT));
		infoPanel1.setLayout(new FlowLayout(FlowLayout.LEFT));
		infoPanel2.setLayout(new FlowLayout(FlowLayout.LEFT));
		infoPanel3.setLayout(new FlowLayout(FlowLayout.LEFT));
		infoPanel4.setLayout(new FlowLayout(FlowLayout.LEFT));
		panel3.setLayout(new FlowLayout(FlowLayout.LEFT));
		
		panel1.add(new GTADSLabel("Game Listings"));
		panel2.add(gameroomScrollPane);
		infoPanel1.add(new GTADSLabel(locale.printLocale("Game") + " : "));
		infoPanel1.add(gameName);
		infoPanel2.add(new GTADSLabel(locale.printLocale("Game Type") + ": "));
		infoPanel2.add(gameType);
		infoPanel3.add(new GTADSLabel(locale.printLocale("Players") + ": "));
		infoPanel3.add(gameUsers);
		infoPanel4.add(new GTADSLabel(locale.printLocale("Status") + ": ")); 
		infoPanel4.add(gameStatus);
		panel3.add(joinButton);
		panel3.add(cancelButton);
		
		this.setContentPane(mainPanel);
		
		mainPanel.add(panel1);
		mainPanel.add(panel2);
		mainPanel.add(infoPanel1);
		mainPanel.add(infoPanel2);
		mainPanel.add(infoPanel3);
		mainPanel.add(infoPanel4);
		mainPanel.add(panel3);
		
		pack();
		
		MetaData requestListHeader = new MetaData(ClientLoginScreen.getInstance().getUsername(),MetaData.GAME,
				MetaData.SEND_LIST);
		try {
			MessageAdapter.sendData(null,DSChatClient.ClientSocket,requestListHeader,"NULL");
		} catch(IOException ioe){
			return;
		}
	}
	
	private void createGameListBox(){
		gameroomListBox = new GTADSList();
		gameroomScrollPane = new GTADSScrollPane(gameroomListBox, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, 
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		gameroomListBox.setPrototypeCellValue("########################################");
	}
	
	private void createComponents(){
		joinButton = new GTADSButton("Join Game");
		joinButton.addActionListener(this);
		cancelButton = new GTADSButton("Cancel");
		cancelButton.addActionListener(this);
		gameroomListBox.addMouseListener(this);
	}
	
	public void addGameRoomToList(GameRoom newGame){
		for (int i = 0; i < gameroomList.size();i++){
			GameRoom t = (GameRoom)gameroomList.get(i);
			if (t.getChatroomName().equals(newGame.getChatroomName())){
				gameroomList.remove(i);
				gameroomDisplayList.remove(i);
				gameroomList.add(i,newGame);
				gameroomDisplayList.add(i,newGame.getChatroomName());
				return;
			}
		}
		gameroomList.add(newGame);
		gameroomDisplayList.add(newGame.getChatroomName());
		// Refresh List
		this.refreshGameList();
	}
	
	public void removeGameRoomFromList(String killedGame){
		for (int i = 0; i < gameroomList.size();i++){
			if (((GameRoom)gameroomList.get(i)).getChatroomName().equals(killedGame)){
				gameroomList.remove(i);
				gameroomDisplayList.remove(i);
				break;
			}
		}
		// Refresh JList
		this.refreshGameList();
	}
	
	public void refreshGameList(){
		int placeValue = gameroomListBox.getSelectedIndex();
		gameroomListBox.setListData(gameroomDisplayList);
		gameroomListBox.setSelectedIndex(placeValue);
		updateGameStatus();
	}
	
	public void joinGameroomAction(){
		int placeValue = gameroomListBox.getSelectedIndex();
		if (placeValue > -1){
			String gameroomName = ((GameRoom)gameroomList.get(placeValue)).getChatroomName();
			try {
				MetaData joinroomHeader = new MetaData(ClientLoginScreen.getInstance().getUsername(),
						MetaData.GAME,MetaData.JOIN_CHATROOM);
				MessageAdapter.sendData(null,DSChatClient.ClientSocket,joinroomHeader,gameroomName);
			} catch (IOException ioe){
				return;
			}
		}
	}
	
	public int getNumberInList(){
		return gameroomList.size();
	}
	
	public void actionPerformed(ActionEvent e) {
		if (e.getSource().equals(joinButton)){
			joinGameroomAction();
		}
		if (e.getSource().equals(cancelButton)){
			this.hide();
		}
	}
	public void mouseClicked(MouseEvent e) {
		if (e.getButton() == MouseEvent.BUTTON1){
			if (e.getClickCount() == 2){
				joinGameroomAction();
			}
		}
	}
	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}
	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}
	public void mousePressed(MouseEvent e) {
		updateGameStatus();
	}
	
	public void updateGameStatus(){
		try {
			int placeValue = gameroomListBox.getSelectedIndex();
			if (placeValue > -1){
				GameRoom g = (GameRoom)gameroomList.get(placeValue);
				gameName.setText(g.getChatroomName());
				gameType.setText(g.getGameType());
				gameUsers.setText(g.getNumPlayers() + "/" + g.getMaxPlayers());
			}
		} catch (ArrayIndexOutOfBoundsException a){
			return;
		}
	}
	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}
	public static void main(String[] args){
		GameroomListWindow.getInstance().show();
	}
}

⌨️ 快捷键说明

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