📄 client.java
字号:
package Login;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import NetPlayer.NetSnake;
import OnePlayer.OneSnake;
import TwoPlayer.TwoSnake;
public class Client extends JFrame implements ActionListener{
JLabel headLabel;
JLabel ipLabel,xLabel,yLabel;
JTextField xHelpText,yHelpText;
JTextField ipText,xText,yText;
JRadioButton onePlayer,twoPlayer,netPlayer;
ButtonGroup bg;
JButton submit,centel;
int width=300,height=350;
Panel northPanel,centerPanel,southPanel;
public Client() {
super("贪吃蛇登陆器");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
int w=Toolkit.getDefaultToolkit().getScreenSize().width;
int h=Toolkit.getDefaultToolkit().getScreenSize().height;
setBounds(w/2-width/2, h/2-height/2, width, height);
setLayout(new BorderLayout());
/*
* 总体布局分成三层
* North:【标题】
* Center:【选择模式】
* South:【登录、退出按钮】
*/
/*
* North
*/
northPanel=new Panel();
Font f=new Font("黑体",Font.PLAIN,20);
JLabel loginL=new JLabel("贪吃蛇登录窗口",JLabel.CENTER);
loginL.setFont(f);
northPanel.add(loginL);
add(northPanel,BorderLayout.NORTH);
/*
* Center
*/
centerPanel=new Panel();
centerPanel.setLayout(new GridLayout(2,1));
/*
* 【选择模式】布局分为两层:p1,p2
* p1:三个选择模式
* p2:网络模式的连接信息
*/
Panel p1=new Panel();
/*
* p1
*/
p1.setLayout(new GridLayout(3,1));
onePlayer=new JRadioButton("个人练习模式");
twoPlayer=new JRadioButton("双人对战模式");
netPlayer=new JRadioButton("网络对战模式");
bg=new ButtonGroup();
bg.add(onePlayer);
bg.add(twoPlayer);
bg.add(netPlayer);
p1.add(onePlayer);
p1.add(twoPlayer);
p1.add(netPlayer);
centerPanel.add(p1);
Panel p2=new Panel();
/*
* p2
*/
p2.setLayout(new FlowLayout());
ipLabel=new JLabel("服务器 I P:");
ipText=new JTextField("127.0.0.1",15);
xLabel=new JLabel("起始坐标X:");
xText=new JTextField("0",10);
xText.setEditable(false);
xHelpText=new JTextField("0=<X<60");
xHelpText.setForeground(Color.red);
xHelpText.setEditable(false);
yLabel=new JLabel("起始坐标Y:");
yText=new JTextField("0",10);
yHelpText=new JTextField("0=<Y<60");
yHelpText.setForeground(Color.red);
yHelpText.setEditable(false);
p2.add(ipLabel);
p2.add(ipText);
p2.add(xLabel);
p2.add(xText);
p2.add(xHelpText);
p2.add(yLabel);
p2.add(yText);
p2.add(yHelpText);
centerPanel.add(p2);
add(centerPanel,BorderLayout.CENTER);
/*
* South
*/
southPanel =new Panel();
southPanel.setLayout(new GridLayout(1,2));
submit=new JButton("登录");
centel=new JButton("退出");
southPanel.add(submit);
southPanel.add(centel);
submit.addActionListener(this);
centel.addActionListener(this);
add(southPanel,BorderLayout.SOUTH);
setVisible(true);
setResizable(false);
}
public static void main(String[] args) {
new Client();
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==submit)
{
if(onePlayer.isSelected())
{
new OneSnake();
this.dispose();
}
else if(twoPlayer.isSelected())
{
new TwoSnake();
this.dispose();
}
else if(netPlayer.isSelected())
{
int x=Integer.parseInt(xText.getText());
int y=Integer.parseInt(yText.getText());
String ip=ipText.getText();
if(y<0||y>=60)
{
JOptionPane.showMessageDialog(null, "输入错误!","Error", JOptionPane.INFORMATION_MESSAGE);
}
else
{
this.dispose();
new NetSnake(x,y,ip);
}
}
}
else if(e.getSource()==centel)
{
this.dispose();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -