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

📄 totalpanel.java

📁 java编写的一个网络象棋,通过对方ip连接,开始游戏,同时可以进行聊天,聊天部分通过线程实现,可以同时进行多个会话.
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.StringTokenizer;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
import chat.ChatPanel;
import net.*;

public class TotalPanel extends JPanel{

	JPanel gameArea = new JPanel();
	JPanel chatArea = new JPanel();
	
	JButton startB = new JButton("开始");
	JButton giveupB = new JButton("认输");
	
	Net net = new Net();	
	ChatPanel chatPanel = new ChatPanel(net);
	ChessPane chessPane = new ChessPane(net);
	TimePanel timePanel = new TimePanel();
	
	NetMsgListener netMsgListener = new NetMsgListener();
	TimerThread timer = new TimerThread();
	
	
	public TotalPanel(){
		
		setLayout(null);
		addGameArea();
		addChatArea();
		netMsgListener.start();
	}
	
	private void addGameArea(){
		System.out.println("GameArea");
		gameArea.setBorder(BorderFactory.createCompoundBorder(
				BorderFactory.createEtchedBorder(EtchedBorder.RAISED), BorderFactory.createLineBorder(Color.GRAY, 3)));
		gameArea.setBounds(20, 10, 610, 620);
		gameArea.setBackground(Color.WHITE);
		gameArea.setLayout(null);
		
		chessPane.setBounds(50,40,450,500);
		
		startB.setBounds(50,560,80,30);                    //开始按钮
		startB.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if(!chessPane.iStarted){
					chessPane.setStart();
					net.sendMessage("startchess");
				}
			}
		});
		
		giveupB.setBounds(140,560,80,30);               //认输按钮
		giveupB.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if(chessPane.iStarted&&chessPane.heStarted)
					if(JOptionPane.showConfirmDialog(null,"真的要认输吗?","认输",0)==JOptionPane.YES_OPTION){
						net.sendMessage("giveup");
						chessPane.reStart();
					}
			}
		});

		gameArea.add(chessPane,null);
		gameArea.add(timePanel,null);
		gameArea.add(startB,null);
		gameArea.add(giveupB,null);
		
		this.add(gameArea,null);
	}
	
	private void addChatArea(){
		chatArea.setBorder(BorderFactory.createCompoundBorder(
				BorderFactory.createEtchedBorder(EtchedBorder.RAISED), BorderFactory.createLineBorder(Color.GRAY, 3)));
		chatArea.setBounds(640, 10, 340, 620);
		chatArea.setBackground(Color.WHITE);	
		chatArea.setLayout(null);
		chatPanel.setBounds(10,10,320,600);
		chatArea.add(chatPanel,null);
		this.add(chatArea,null);
	}
	
	class NetMsgListener extends Thread{      //监听网络消息
		private String msg=null; 
		public void run(){
			System.out.println("监听网络消息线程启动");
			while(true){				
				try{
					sleep(300);
					msg = net.readMessage();
				}catch(Exception e){
					System.out.println(e);
				}
				if(!msg.equals("")){ 
					System.out.println("deal");
		//			String []str = msg.split("#",0);
		//			if(str[0].equals("chess"))
						chessPane.dealMsg(msg);      //象棋处理信息
		//			else if(str[0].equals("chat"))
						chatPanel.dealMsg(msg);      //聊天处理信息
		//			else
					if(msg.equals("connect"))  
						timer.start();
				}
			}
		}
	}
	
	class TimerThread extends Thread{
		private int time = 0;
		public void run(){
			while(true){
				try{
					sleep(1000);
					time++;
				}catch(InterruptedException e){
					System.out.print(e.toString());
				}
				chessPane.countTime();
			}
		}
	}
}

⌨️ 快捷键说明

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