import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
import java.net.*;
public class wuziqiFinalClient extends JApplet implements wuziqiConstants{
private boolean myTurn=false;//控制是否可以走棋
private String myToken="";//在自己界面的小面板上下的棋子
private String otherToken="";//别人在自己界面的小面板上下的棋子
private Cell[][] cell=new Cell[15][15];//15*15个小面板,用来画棋子
private JLabel jlblTitle=new JLabel();//告诉用户是哪位游戏者(player1 or player2)
private JLabel jlblStatus=new JLabel();//告诉用户当前状态(轮谁走,输赢等)
private int rowSelected;//在大面板中第几行
private int columnSelected;//在大面板中第几列
private DataInputStream fromServer;//从服务器得到五子棋信息
private DataOutputStream toServer;//向服务器发送五子棋信息
private DataInputStream fromS;//从服务器得到聊天信息
private DataOutputStream toS;//向服务器发送聊天信息
private boolean first=true;//控制计时器走停变量之一
private boolean continueToPlay=true;//判断是否继续游戏
private boolean waiting=true;//判断是否等待
private String host="localhost";//本机地址
private JPanel p1=new JPanel();//五子棋大面板
private JPanel p2=new JPanel();//聊天大面板
private JTextArea jta=new JTextArea();//聊天文字记录窗口
private JTextField jtf=new JTextField();//聊天文字输入口
private JButton jbt=new JButton("Send");
private JButton jbt1=new JButton("字体");
private JPanel p3=new JPanel();//加jbt,jbt1,jtf的小面板
private String name="宋体";
public void init()
{
///////////////////////////聊天面板
jta.setEditable(false);
p2.setLayout(new BorderLayout());
p2.add(new JScrollPane(jta),BorderLayout.CENTER);
p3.setLayout(new BorderLayout());
p3.add(jtf,BorderLayout.CENTER);
p3.add(jbt,BorderLayout.EAST);
p3.add(jbt1,BorderLayout.WEST);
p2.add(p3,BorderLayout.SOUTH);
///////////////////////////////////下棋面板
p1.setLayout(new BorderLayout());
JPanel p=new JPanel();
p.setLayout(new GridLayout(15,15,0,0));
for(int i=0;i<15;i++)
for(int j=0;j<15;j++)
{
p.add(cell[i][j]=new Cell(i,j));
}
p.setBorder(new LineBorder(Color.red,1));
jlblTitle.setHorizontalAlignment(JLabel.CENTER);
jlblTitle.setFont(new Font("SansSerif",Font.BOLD,16));
p1.add(jlblTitle,BorderLayout.NORTH);
p1.add(p,BorderLayout.CENTER);
p1.add(jlblStatus,BorderLayout.SOUTH);
////////////////////////////////////////
setSize(913,650);
setLayout(new GridBagLayout());
wuziqiNumberClock a=new wuziqiNumberClock();
wuziqiNumberClock2 a2=new wuziqiNumberClock2();
/////////////////////////////////////////新使用的布局管理器
GridBagConstraints gb=new GridBagConstraints();
gb.fill=GridBagConstraints.BOTH;
Container con=getContentPane();
addComp(p1,con,gb,0,0,8,2,2,1);
addComp(a,con,gb,0,2,1,1,1,1);
addComp(a2,con,gb,1,2,1,1,1,1);
addComp(p2,con,gb,2,2,4,1,1,6);
///////////////////////////////////////
connectToServer();//连接到服务器
//////////////////////////聊天部分按钮监听器
jta.setBackground(Color.green);
jtf.setBackground(Color.white);
jtf.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
String send=jtf.getText().trim();
if(send.equals(""))
{
JOptionPane.showMessageDialog(null,"发送信息不能为空,请重新输入!");
send=jtf.getText().trim();
}
else
{
jtf.setText(null);
toS.writeUTF(send);
toS.flush();
Calendar now = new GregorianCalendar();
String st="";
int nowh=now.get(Calendar.HOUR_OF_DAY);
int nowm=now.get(Calendar.MINUTE);
int nows=now.get(Calendar.SECOND);
if(nowh < 10)
st += "0"+nowh;
else
st +=""+nowh;
if(nowm<10)
st += ":0"+nowm;
else
st += ":"+nowm;
if(nows<10)
st += ":0"+nows;
else
st += ":"+nows;
jta.append("I say: "+st+"\n");
jta.append(send+"\n");
jta.setCaretPosition(jta.getText().length());
}
}catch(IOException ex)
{
ex.printStackTrace();
}
}
});
jbt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
String send=jtf.getText().trim();
if(send.equals(""))
{
JOptionPane.showMessageDialog(null,"发送信息不能为空,请重新输入!");
send=jtf.getText().trim();
}
else
{
jtf.setText(null);
toS.writeUTF(send);
toS.flush();
Calendar now = new GregorianCalendar();
String st="";
int nowh=now.get(Calendar.HOUR_OF_DAY);
int nowm=now.get(Calendar.MINUTE);
int nows=now.get(Calendar.SECOND);
if(nowh < 10)
st += "0"+nowh;
else
st +=""+nowh;
if(nowm<10)
st += ":0"+nowm;
else
st += ":"+nowm;
if(nows<10)
st += ":0"+nows;
else
st += ":"+nows;
jta.append("I say: "+st+"\n");
jta.append(send+"\n");
jta.setCaretPosition(jta.getText().length());
}
}catch(IOException ex)
{
ex.printStackTrace();
}
}
});
jbt1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
final JDialog jd=new JDialog();
jd.setLayout(new FlowLayout());
ButtonGroup bg=new ButtonGroup();
JRadioButton jrb1=new JRadioButton("幼圆");
JRadioButton jrb2=new JRadioButton("新宋体");
JRadioButton jrb3=new JRadioButton("黑体");
JRadioButton jrb5=new JRadioButton("华文行楷") ;
JRadioButton jrb4=new JRadioButton("Gulim");
JRadioButton jrb6=new JRadioButton("华文细黑");
bg.add(jrb1);
bg.add(jrb2);
bg.add(jrb3);
bg.add(jrb4);
bg.add(jrb5);
bg.add(jrb6);
jd.add(jrb1);
jd.add(jrb2);
jd.add(jrb3);
jd.add(jrb4);
jd.add(jrb5);
jd.add(jrb6);
jrb1.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
name="幼圆";
jd.dispose();
Font f=new Font(name,Font.BOLD,16);
jtf.setFont(f);
jta.setFont(f);
}
});
jrb2.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
name="新宋体";
jd.dispose();
Font f=new Font(name,Font.BOLD,16);
jtf.setFont(f);
jta.setFont(f);
}
});
jrb3.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
name="黑体";
jd.dispose();
Font f=new Font(name,Font.BOLD,16);
jtf.setFont(f);
jta.setFont(f);
}
});
jrb5.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
name="华文行楷";
jd.dispose();
Font f=new Font(name,Font.BOLD,16);
- 1
- 2
前往页