GUI编程..

news2024/11/17 23:39:52

1.GUI(Graphical User Interface 图形用户界面)

所谓GUI 指的是在计算机中采用图形方式展示用户的界面
在GUI之前采用的是字符界面
在这里插入图片描述
有了GUI之后 采用的则是图形界面
在这里插入图片描述

2.Java的GUI编程方案

常见的有四种在这里插入图片描述

3.Swing

1.实现一个窗口

public class Main{
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        // 首先创建一个窗口 并且命名
        JFrame frame = new JFrame("第一个窗口");
        // 设置窗口的大小和位置
        frame.setBounds(300, 300, 400, 400);
        // 设置窗口关闭以后程序就退出
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        // 设置窗口可见性
        frame.setVisible(true);
    }
}

2.Swing的常用组件

Swing提供了很多常用的组件 其中紫色的组件位于java.awt包中 绿色的组件位于javax.swing包中在这里插入图片描述
以下是swing中常用的组件预览
在这里插入图片描述
接下来我们利用这些组件实现一个小案例:
就是实现以下简单的加法运算 而且要对不合理的输入触发反应

public class MyFrame extends JFrame {
    // 定义一个构造方法
    public MyFrame(){
        // 调用父类的构造方法创建一个窗口
        super("计算窗口");
        // 设置窗口的位置和大小
        setBounds(400, 400, 700, 400);
        // 设置窗口的关闭后的默认操作 即程序退出
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        // 接着我们设置一下窗口的布局方式为流式布局 是从左到右、从上到下进行布局的 可以设置水平间隔和竖直间隔
        setLayout(new FlowLayout(FlowLayout.LEFT,  20, 20));
        // 我们可以设置一个字体 去控制之后的字体大小
        Font font = new Font("微软雅黑", Font.PLAIN, 18);
        // 接着我们首先添加第一个加数的文本域
        JTextField tf1 = new JTextField(10);
        tf1.setFont(font);
        add(tf1);
        // 接着我们添加加号所在的文本标签
        JLabel addLabel = new JLabel("+");
        addLabel.setFont(font);
        add(addLabel);
        // 接着我们添加第二个加数的文本域
        JTextField tf2 = new JTextField(10);
        tf2.setFont(font);
        add(tf2);
        // 接着我们添加等号所在的文本标签
        JLabel equalLabel = new JLabel("=");
        equalLabel.setFont(font);
        add(equalLabel);
        // 接着我们添加结果所在的文本标签
        JLabel resultLabel = new JLabel();
        resultLabel.setFont(font);
        resultLabel.setText("?");
        add(resultLabel);
        // 接着我们添加一个计算的按钮
        JButton button = new JButton();
        button.setFont(font);
        button.setText("计算");
        add(button);
        // 为计算按钮添加监听器
        button.addActionListener((e) -> {
            try {
                int result = Integer.parseInt(tf1.getText()) + Integer.parseInt(tf2.getText());
                resultLabel.setText(result + "");
            }catch(Exception a){
                int w = 500;
                int h = 100;
                int x = this.getX() + ((this.getWidth() - w) >> 1);
                int y = this.getY() + ((this.getHeight() - h) >> 1);
                // 弹出一个警告窗口 设置弹出以后父窗口就不可以执行点击操作了
                JDialog dialog = new JDialog(this, true);
                dialog.setTitle("警告");
                dialog.setBounds(x, y, w, h);
                // 还得提示一下输入正确的值
                JLabel label = new JLabel("请输入正确的整数!!!");
                label.setFont(font);
                dialog.add(label);
                dialog.setVisible(true);
            }
        });
    }
}
public class Main{
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        // 展示窗口以及一些组件
        new MyFrame().setVisible(true);
    }
}

4.Java程序的运行过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1435484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二证券:北向资金连续第五日净流入,茅台、工行、五粮液等获加仓

沪指低收险守2700点关口,北向资金接连5日净流入。 2月5日,A股三大股指团体低开,三大股指均创阶段性新低后反弹,创业板指午后首先翻红且一度涨超3%,深成指和沪指也相继转涨。但商场做多情绪欠安,沪深股指重…

K8S之Namespace的介绍和使用

Namespace的理论和实操 Namespace理论说明Namespace实操创建、查看命名空间使用ResouceQuota 对Namespace做资源限额更多ResouceQuota 的使用 Namespace理论说明 命名空间定义 K8s支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间&…

深入理解Netty及核心组件使用—下

目录 ChannelHandler ChannelHandler 接口 ChannelInboundHandler 接口 ChannelHandler 的适配器 Handler 的共享和并发安全性 资源管理和 SimpleChannelInboundHandler Bootstrap ChannelInitializer ChannelOption ChannelHandler ChannelHandler 接口 从开发人员的…

国产工业三防平板丨加固手持平板丨国产化加固平板有何优势?

随着科技的不断发展,三防产品已经逐渐成为人们生活、工作和娱乐中必不可少的一部分。而国产三防平板产品也在不断崛起,逐渐获得了消费者的认可和喜爱。相较于国外的三防平板产品,国产三防平板产品在技术和价格等方面具有一定的优势&#xff0…

游戏服务器租赁多少钱1个月?一年费用

2024年更新腾讯云游戏联机服务器配置价格表,可用于搭建幻兽帕鲁、雾锁王国等游戏服务器,游戏服务器配置可选4核16G12M、8核32G22M、4核32G10M、16核64G35M、4核16G14M等配置,可以选择轻量应用服务器和云服务器CVM内存型MA3或标准型SA2实例&am…

转融通业务是什么?好处和弊端是什么?

转融通业务是指证券金融公司借入证券、筹得资金后,再转借给证券公司,为证券公司开展融资融券业务提供资金和证券来源,包括转融券业务和转融资业务两部分。从证券金融公司角度看,向证券公司提供资金和证券供其开展融资融券业务&…

*s是什么意思

&s是地址,*是指针,*&s是指指向&s地址的指针; j *&s 就是 j s的意思。 例如:readRawData( (char *)& rowCount, sizeof(qint16)); //读取文本流中的行数到rowCount、列数到colCount qint16 rowCount, col…

【成品论文】2024美赛B题完整成品论文23页+3小问matlab代码+数据集汇总

2024 年美国大学生数学建模竞赛(2024 美赛)B 题: 2024 MCM 问题 B: 搜寻潜水艇 题目翻译: Maritime Cruises Mini-Submarines (MCMS)是一家总部位于希腊的公司,专门制造能够携 带人类到达海洋最深处的潜水艇。潜水艇是…

电脑虚拟内存怎么设置?1分钟快速增加内存!

“我电脑里的内存好像不太够用,因此,我想在电脑里增加一些虚拟内存。不知道我应该怎么操作呢?有什么比较简单的此操作方法吗?” 虚拟内存是计算机系统内存管理的一种技术,它为程序提供了一个比实际物理内存更大的内存空…

Web课程学习笔记--CSS选择器的分类

CSS 选择器的分类 基本规则 通过 CSS 可以向文档中的一组元素类型应用某些规则 利用 CSS,可以创建易于修改和编辑的规则,且能很容易地将其应用到定义的所有文本元素 规则结构 每个规则都有两个基本部分:选择器和声明块;声明块由一…

Python老司机教你,花几分钟,构建一个Python包

1、前言 构建包的过程有些复杂,但从长远来看是值得的,尤其是可以创建属于自己的Python包。本文的目的是通过对构建一个新发行包的案例研究,让您了解需要构建什么以及如何构建python包的基础知识。 2、开始 首先,您肯定需要设置…

串行线路和静态路由配置

实验大纲 1.构建网络拓扑结构图 2.修改路由器名字 3.查看路由器的串行控制信息 4.配置R1和R2串行接口 5.测试连通性(R1 PING R2 & R2 PING R1) 6.配置路由器以太网口 7.配置主机信息 8.测试路由器连通性 9.查看路由信息 10.在R1配置静态路…

CentOS基于volatility2的内存取证实验

CentOS,Redhat和Fedora 都是Red Hat体系,采用yum管理器,不同于Debian、Ubuntu作为Debian体系使用apt 本文以CentOS为例,采用avml制作内存镜像,并利用volatility官方所给工具制作profile符号文件,进行简单的…

2024腾讯云游戏服务器租用多少钱一年?

2024年更新腾讯云游戏联机服务器配置价格表,可用于搭建幻兽帕鲁、雾锁王国等游戏服务器,游戏服务器配置可选4核16G12M、8核32G22M、4核32G10M、16核64G35M、4核16G14M等配置,可以选择轻量应用服务器和云服务器CVM内存型MA3或标准型SA2实例&am…

[晓理紫]AI专属会议截稿时间订阅

AI专属会议截稿时间订阅 关注{晓理紫},每日更新最新AI专属会议信息,如感兴趣,请转发给有需要的同学,谢谢支持!! 如果你感觉对你有所帮助,请关注我,每日准时为你推送最新AI专属会议信…

环境配置:Ubuntu18.04 ROS Melodic安装

前言 不同版本的Ubuntu与ROS存在对应关系。 ROS作为目前最受欢迎的机器人操作系统,其核心代码采用C编写,并以BSD许可发布。ROS起源于2007年,是由斯坦福大学与机器人技术公司Willow Garage合作的Switchyard项目。2012年,ROS团队从…

恒创科技:服务器内存不足影响大吗?

​  服务器在为网站、应用程序和在线服务提供支持方面发挥着关键作用。这些服务器需要提供最佳性能,以确保正常无缝的用户体验,而RAM是显著影响服务器性能的关键配置之一。 RAM 是一种随机存取存储器,计算机和服务器使用它来临时存储正在使…

OCR文本纠错思路

文字错误类别:多字 少字 形近字 当前方案 文本纠错思路 简单: 一、构建自定义词典,提高分词正确率。不在词典中,也不是停用词,分成单字的数据极有可能是错字(少部分可能是新词)。错字与前后的…

机器学习---半监督学习简单示例(标签传播算法)

1. 使用半监督学习方法 Label Spreading 在一个生成的二维数据集上进行标签传播 import numpy as np import matplotlib.pyplot as plt from sklearn.semi_supervised import label_propagation from sklearn.datasets import make_circles# generate ring with inner box n_s…

数学建模:数据相关性分析(Pearson和 Spearman相关系数)含python实现

相关性分析是一种用于衡量两个或多个变量之间关系密切程度的方法。相关性分析通常用于探索变量之间的关系,以及预测一个变量如何随着另一个变量的变化而变化。在数学建模中,这是常用的数据分析手段。   相关性分析的结果通常用相关系数来表示&#xff…