当前位置: 首页 > news >正文

GUI简介、Swing的常用组件、java程序的运行过程、class文件、JAR、runable_jar、双括号初始化

GUI简介

GUI:图形用户界面,在计算机中采用图形的方式显示用户界面

java的GUI开发

  • AWT:java最早推出的GUI编程开发包,界面风格跟随操作系统
  • SWT:eclipse就是java使用SWT开发的
  • Swing:在AWT的基础上扩充了功能,可以在不同操作系统重保持统一风格
  • JavaFx:Java官方推出的新一代GUI编程开发包

第一个Swing窗口

java可以写用户界面,本质就是调用各种写好了的API

package swing;import javax.swing.*;public class Main {public static void main(String[] args) {//其实本质就是调用APIJFrame frame = new JFrame("我是一个窗口");frame.setBounds(300, 300, 400, 400);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}
}

在这里插入图片描述

Swing的常用组件

在这里插入图片描述
在这里插入图片描述
编写MyFram

package swing;import javax.swing.*;
import java.awt.*;public class MyFrame extends JFrame {public MyFrame(){super("简单的计算窗口");//其实本质就是调用APIsetBounds(300, 300, 400, 400);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 从左到右水平排列setLayout(new FlowLayout(FlowLayout.LEFT, 20, 20));Font font = new Font("微软雅黑", Font.PLAIN, 18);// 文本输入框JTextField tf1 = new JTextField(5);tf1.setFont(font);add(tf1);//文本标签JLabel addLabel = new JLabel("+");addLabel.setFont(font);add(addLabel);// 文本输入框JTextField tf2 = new JTextField(5);tf1.setFont(font);add(tf2);//文本标签JLabel equalLabel = new JLabel("=");addLabel.setFont(font);add(equalLabel);//文本标签JLabel resultLabel = new JLabel("?");resultLabel.setFont(font);add(resultLabel);// 按钮JButton btn = new JButton("计算");btn.setFont(font);//点击按钮,设置监听btn.addActionListener((evt) ->{try { //异常机制:防止不合理的输出导致程序崩溃的问题int n1 = Integer.parseInt(tf1.getText());int n2 = Integer.parseInt(tf2.getText());resultLabel.setText(n1 + n2 + "");} catch (Exception e){int w = 300;int h = 100;int x = getX() + (getWidth() + w) >> 1;int y = getY() + (getHeight() + h) >> 1;JDialog dialog = new JDialog(this, true); // modal窗口的概念,弹出子窗口,父窗口不能再点击dialog.setTitle("警告");dialog.setBounds(x, y, w, h);dialog.setResizable(false); //不能改变大小JLabel label = new JLabel("请输入正确格式的整数");label.setFont(font);dialog.add(label);dialog.setVisible(true);}});add(btn);}
}

Main中创建MyFram对象,并执行显示方法

package swing;import javax.swing.*;
import java.awt.*;public class Main {public static void main(String[] args) {MyFrame myFrame = new MyFrame();myFrame.setVisible(true);}
}

效果展示

输入合法数据可以进行计算
在这里插入图片描述
输入不合法数字,按钮进行监听,给出警告,此外还有一些细节,弹出警告框之后,不能再点击父窗口,警告窗口不能改变大小
在这里插入图片描述

java程序的运行过程

在这里插入图片描述

.class文件

在这里插入图片描述

JAR

JAR ,全称Java Archive,使用ZIP文件格式来打包

将自己的代码分享给他人

  • 直接分享.java文件,注意文件第一行导包路径问题(开源)
  • 将相关的.class文件打包成一个.jar文件(其实就是一个压缩包)后分享出去(不开源)
  • 可以对JAR包进行数字前面,防止内容被恶意篡改

idea中jar包的导出与导入

java导出jar包的步骤(本质是调用了JDK bin目录中的jar.exe)
File->Project Structure->artifacts->点击“+”按钮->JAR->“From modules with dependence”
在这里插入图片描述
然后点击OK

在这里插入图片描述

runable_jar

在Swing组件中写的计算器功能程序,现在想将其变成一个可执行文件,用户点击之后,就可以直接使用

双括号初始化

相较于传统初始化,优点在于代码更加简洁

import java.awt.*;
import java.io.PrintStream;
import java.util.ArrayList;public class Main {public static void main(String[] args) {
//        ArrayList<Integer> list = new ArrayList<>();
//        list.add(11);
//        list.add(22);
//        System.out.println(list);//双括号写法ArrayList<Integer> list = new ArrayList<Integer>(){{add(11);add(22);}};System.out.println(list);}
}

控制台输出

[11, 22]
http://www.lryc.cn/news/469365.html

相关文章:

  • @Autowired和@Resource和getBean()区别
  • Merlion笔记(四):添加一个新的预测模型
  • 【论文阅读】ESRGAN
  • 电脑异常情况总结
  • [项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp
  • PL/I语言的起源?有C语言,有B语言和A语言吗?为什么shell脚本最开始可能有#!/bin/bash字样?为什么不支持嵌套注释?
  • gin入门教程(3):创建第一个 HTTP 服务器
  • Vue+ECharts+iView实现大数据可视化大屏模板
  • el-table 表格设置必填项
  • vivo 轩辕文件系统:AI 计算平台存储性能优化实践
  • Vue学习笔记(四)
  • 发送短信,验证码
  • 国内大语言模型哪家更好用?
  • OTP一次性密码、多因子认证笔记
  • 玉米生长阶段检测系统源码&数据集全套:改进yolo11-dysample
  • 【机器学习】决策树算法
  • P2818 天使的起誓
  • 数字信号处理实验简介
  • Flask-SQLAlchemy 组件
  • Could not retrieve mirrorlist http://mirrorlist.centos.org错误解决方法
  • 最新PHP网盘搜索引擎系统源码 附教程
  • SpringBoot面试热题
  • ASP.NET Core8.0学习笔记(二十三)——EF Core自引用
  • springboot童装销售管理系统-计算机毕业设计源码92685
  • OpenCV中的图像通道合并
  • Flutter TextField和Button组件开发登录页面案例
  • 【vue + mockjs】Mockjs——数据接口模拟
  • ssm订餐系统-计算机毕业设计源码26763
  • 4.2-7 运行MR应用:词频统计
  • 查看Chrome安装路