Java 网络五子棋游戏 1.docx
《Java 网络五子棋游戏 1.docx》由会员分享,可在线阅读,更多相关《Java 网络五子棋游戏 1.docx(59页珍藏版)》请在冰豆网上搜索。
![Java 网络五子棋游戏 1.docx](https://file1.bdocx.com/fileroot1/2022-10/28/4fb0904d-33b0-4229-895b-4c973a67f66d/4fb0904d-33b0-4229-895b-4c973a67f66d1.gif)
Java网络五子棋游戏1
第十二章网络五子棋游戏
一、以下为主窗体代码(MainFrame.java):
/**
*主窗体
*/
publicclassMainFrameextendsjavax.swing.JFrame{
privateSocketsocket;//定义控件类
privateObjectOutputStreamobjout;
privateUserBeantowardsUser;//对家
protectedUserBeanuser;//定义用户类
SocketserverSocket;//控件类构造方法
publicSocketgetServerSocket(){
returnserverSocket;//返回控件方法
}
publicSocketgetSocket(){
returnsocket;//返回控件类
}
/**
*向对家发送信息的方法
*
*-要发送的文本或其他类型的对象
*/
publicvoidsend(Objectmessage){
try{
objout.writeObject(message);//向对象输出流添加对象
objout.flush();
}catch(IOExceptionex){
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE,null,ex);
}
}
publicUserBeangetUser(){
returnuser;//返回用户
}
/**
*设置用户信息的方法
*
*-本地用户对象
*/
publicvoidsetUser(UserBeanuser){
this.user=user;//调用this有参构造方法
//向用户信息面板添加昵称
userInfoTextArea.setText("昵称:
"+user.getName()+"\n");
//添加IP信息
userInfoTextArea.append("IP:
"+user.getHost().getHostAddress()+"\n");
//获取用户信息表格组件的数据模型对象
DefaultTableModelmodel=(DefaultTableModel)userInfoTable.getModel();
VectordataVector=model.getDataVector();
Vectorrow=newVector();//使用用户信息创建单行数据的向量
row.add(user.getName());//添加用户姓名
row.add(user.getHost().getHostName());//添加主机名称
row.add(user.getTime());//添加用户登录时间
if(!
dataVector.contains(row)){
model.getDataVector().add(row);//把用户信息添加到表格组件中
}
//设置本地用户的昵称
chessPanel1.leftInfoLabel.setText(user.getName());//设置用户信息文本域标签
userInfoTable.revalidate();
}
/**
*设置Socket连接和初始化对象输出流的方法
*
*-Socket对象
*/
publicvoidsetSocket(SocketchatSocketArg){
try{
socket=chatSocketArg;
OutputStreamos=socket.getOutputStream();//获取Socket的输出流
objout=newObjectOutputStream(os);//创建对象输出流
}catch(IOExceptionex){
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE,null,ex);
}
}
/**
*主窗体的构造方法
*/
publicMainFrame(){
initComponents();//初始化窗体界面
setGlassPane(loginPanel1);//设置登录面板为玻璃面板
loginPanel1.setVisible(true);//显示登录面板
}
/**
*设置对家用户信息的方法
*-对家通过网络发送来的用户对象
*/
publicvoidsetTowardsUser(UserBeanuser){
this.towardsUser=user;//对家用户对象
DefaultTableModelmodel=(DefaultTableModel)userInfoTable.getModel();//获取用户信息列表的表格数据模型
Vectorrow=newVector();//创建承载表格单行数据的向量集合对象
row.add(towardsUser.getName());//添加用户姓名
row.add(towardsUser.getHost().getHostName());//添加主机名称
row.add(towardsUser.getTime());//添加用户登录时间
VectordataVector=model.getDataVector();//向量
if(!
dataVector.contains(row)){
model.getDataVector().add(row);//添加用户信息到表格中
}
chessPanel1.rightInfoLabel.setText(towardsUser.getName());
userInfoTable.revalidate();//设置对家用户头像的昵称
}
publicUserBeangetTowardsUser(){
returntowardsUser;//返回对家用户
}
/**
*初始化主窗体界面的方法
*/
privatevoidinitComponents(){
loginPanel1=newcom.lzw.gobang.LoginPanel();//创建登录面板的实例对象
chessPanel1=newcom.lzw.gobang.ChessPanel();//创建棋盘面板的实例对象
jPanel1=newjavax.swing.JPanel();//创建窗体1
jPanel3=newjavax.swing.JPanel();//创建窗体3
jLabel1=newjavax.swing.JLabel();//创建一个新的标签1
jLabel1.setBackground(Color.WHITE);//设置标签1的背景颜色
jScrollPane2=newjavax.swing.JScrollPane();//创建一个移动窗体2
userInfoTextArea=newjavax.swing.JTextArea();//创建一个用户信息输入框
jPanel4=newjavax.swing.JPanel();//创建一个新的控制面板4
jScrollPane1=newjavax.swing.JScrollPane();//创建一个移动窗体1
userInfoTable=newjavax.swing.JTable();//创建一个用户信息表
jPanel2=newjavax.swing.JPanel();//创建窗体2
jPanel5=newjavax.swing.JPanel();//创建窗体5
chatTextField=newjavax.swing.JTextField();//创建一个对话框
sendButton=newjavax.swing.JButton();//创建一个发送按钮
jScrollPane3=newjavax.swing.JScrollPane();//创建一个移动窗体3
chatArea=newjavax.swing.JTextArea();//创建一个对话区域窗
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);//设置默认关闭操作
setTitle("小小五子棋");//设置标题
getContentPane().add(chessPanel1,java.awt.BorderLayout.CENTER);//添加一个窗体界面
jPanel1.setLayout(newjavax.swing.BoxLayout(jPanel1,javax.swing.
BoxLayout.PAGE_AXIS));//设置窗体的布局
jPanel3.setBorder(javax.swing.BorderFactory
.createLineBorder(newjava.awt.Color(0,0,0)));//设置边框颜色
jPanel3.setPreferredSize(newjava.awt.Dimension(225,50));//设置窗体大小
jPanel3.setLayout(newjava.awt.BorderLayout());//设置边框
jLabel1.setIcon(newjavax.swing.ImageIcon(getClass().getResource(
"/res/infoPanelLeft.png")));//图片链接
jPanel3.add(jLabel1,java.awt.BorderLayout.WEST);//添加一个西面边框
userInfoTextArea.setColumns(20);//设置一个用户信息框大小
userInfoTextArea.setEditable(false);//设置是否编辑用户信息
userInfoTextArea.setLineWrap(true);//设置是否自动换行
userInfoTextArea.setRows(5);//设置用户信息输入行
jScrollPane2.setViewportView(userInfoTextArea);//添加用户信息显示框
jPanel3.add(jScrollPane2,java.awt.BorderLayout.CENTER);//在一个窗体中添加用户信息显示窗体属性设置
jPanel1.add(jPanel3);//在窗体中添加一个窗体
jPanel4.setBorder(javax.swing.BorderFactory.createLineBorder(
ne