现在,构建Q1类,如图:
需要用到JFrame来构建,如下:
public static void main(String[] args) {
JFrame jFrame = new JFrame();//新定义窗口
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭属性
jFrame.setSize(x, y);//设置窗口大小,x,y都得是整数
jFrame.setTitle("Data Packet Convert");//设置窗口标题
jFrame.setLayout(null);// 无/默认布局
//中间插入其它内容
jFrame.setVisible(true);//这个放在最后一行,否则有可能出现错误显示
}
然后还有3个要用到的功能,分别如下:
JLabel jLabel = new JLabel("Raw Data:");
//创建一个Label界面,括号里则是label界面会显示的文字
JTextField jTextField1 = new JTextField();
//创建一个文本框,可以用来接收或输入文本
JButton jButton1 = new JButton("Data to package");
//创建一个按键,括号里是按键上显示的文字
到了这里,按键,文本框和界面都定义好了,但是还不够,它们既没有设置尺寸,也没有设置到JFrame框架上,需要进行以下操作:
//添加入JFrame
jFrame.add(jLabel);
jFrame.add(jTextField1);
jFrame.add(jButton1);
//设置界面尺寸
jLabel1. setBounds(x1, y1, x2, y2);
jTextField1. setBounds(x1, y1, x2, y2);
jButton1. setBounds(x1, y1, x2, y2);
//x1,x2,y1,y2必须得是整数。
//以界面左上角为(0,0)坐标,沿右侧为x正方向,沿下侧为y正方向。
//x1,y1是生成label,text,button的左上角所在坐标系(上一行描述的)的位置
//x2,y2是生成label,text,button的宽度和高度
此时,已经可以生成你想要的大小和位置的按键,文本框等。
以下为示例代码:
package PartA;
import javax.swing.*;
public class Q1 {
public static void main(String[] args) {
JFrame jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(500, 400);
jFrame.setTitle("Data Packet Convert");
jFrame.setLayout(null);
jFrame.setVisible(true);
JLabel jLabel1 = new JLabel("Raw Data:");
JLabel jLabel2 = new JLabel("Data Package:");
JTextField jTextField1 = new JTextField();
JTextField jTextField2 = new JTextField();
JButton jButton1 = new JButton("Data to package");
JButton jButton2 = new JButton("package to Data");
jFrame.add(jLabel1);
jFrame.add(jTextField1);
jFrame.add(jLabel2);
jFrame.add(jTextField2);
jFrame.add(jButton1);
jFrame.add(jButton2);
int x1 = 63;
int x2 = 157;
int x3 = 282;
int y1 = 100;
int y2 = 200;
jLabel1. setBounds(x1, 0, x2, y1);
jLabel2. setBounds(x1, y1, x2, y1);
jButton1. setBounds(x1, y2, x2, y1);
jTextField1.setBounds(x3, 0, x2, y1);
jTextField2.setBounds(x3, y1, x2, y1);
jButton2. setBounds(x3, y2, x2, y1);
}
}
运行出来效果如下:
GUI界面已经做好,但是按键没有效果,此时则需要为按键设置相应函数:
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
该格式定义为点击一次相应按键,便会执行该函数中的内容。
最后一步:使用getText和setText函数,获取文本框内的参数传递给调用的packet生成,解码函数。
并将相应的内容写进相应的文本框里:
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String rawData = jTextField1.getText();
if (rawData.isEmpty()) {
jTextField2.setText("empty data!");
}
else {
String packet = DataPacket.convertToDataPacket(rawData);
jTextField2.setText(packet);
}
}
});
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String DataPackage = jTextField2.getText();
if (DataPackage.isEmpty()) {
jTextField2.setText("empty data!");
}
else {
String packet = DataPacket.getDataFromDataPacket(DataPackage);
jTextField1.setText(packet);
}
}
});
此时,按下第一个按键,就会将输入在文本框1的字符串转为packet,并显示在文本框2中。
按下第二个按键则会将输入在文本框2的packet字符串转为原始字符串,并显示在文本框1中。
如果出现异常情况(输入为空等等..)则会显示相应的内容在文本框中。
至此,A1部分全部完结。