📄 gameroomlistwindow.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 + -