JAVA-基于GUI生成的模拟数据包转换的图形接口界面——CW3-PartA1(其三)

现在,构建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部分全部完结。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

enosouces

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值