初识Java GUI 编程

news2024/11/27 10:42:09

文章目录

  • 前言
  • 一、什么是 GUI 编程?
  • 二、Java GUI 编程的基础组件
    • 1. JFrame
    • 2.JButton
    • 3. JLabel
    • 提示
  • 三、布局管理器
  • 结语

前言

在当今的软件开发领域,图形用户界面(GUI)的重要性不言而喻。它为用户提供了直观、友好的交互方式,使得软件更加易于使用和操作。在 Java 中,我们可以使用强大的 GUI 编程工具来创建各种类型的应用程序界面。本篇博客介绍Java中的GUI编程的基本知识

一、什么是 GUI 编程?

GUI,即图形用户界面(Graphical User Interface),是一种通过图形元素(如窗口、按钮、文本框等)来与用户进行交互的界面设计方式。与命令行界面相比,GUI 更加直观、易于理解和操作。
在 Java 中,GUI 编程主要涉及使用 Java 的图形库和组件来构建用户界面。这些组件可以响应用户的操作,如点击按钮、输入文本等,并执行相应的业务逻辑。

二、Java GUI 编程的基础组件

1. JFrame

JFrame:这是 Java GUI 编程中的基础容器,它代表一个窗口。可以设置窗口的标题、大小、位置等属性。

import javax.swing.*;

public class IntroJFrame {
    public static void main(String[] args) {
//        创建没有标题的窗口
        JFrame frame = new JFrame("My First GUI");
//        将窗口设置为可见
        frame.setVisible(true);
//        设置窗口大小及位置
        frame.setBounds(100, 100, 450, 300);
//        设置关闭方式
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

运行结果:
在这里插入图片描述

在上面的代码中,我们创建了一个简单的JFrame窗口,设置了标题、大小,并在最后使窗口可见。

2.JButton

JButton:按钮组件,用户可以点击按钮来触发特定的操作。

import javax.swing.*;
import java.awt.*;

public class IntroJButton {
    public static void main(String[] args) {
//        frame窗口的基本设置
        JFrame frame = new JFrame("IntroJButton");
//        设置布局方式
        frame.setLayout(new FlowLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(400, 400, 500, 500);
        frame.setVisible(true);
//        创建按键类型的组件
        JButton button = new JButton("Button");
//        能否点击
        button.setEnabled(false);
//        设置边界线
        button.setBorderPainted(false);
//        添加到窗口
        frame.add(button);
    }
}

运行结果:
在这里插入图片描述

这里创建了一个带有按钮的窗口,当用户点击按钮时,可以通过添加事件监听器来执行特定的操作。

3. JLabel

JLabel:标签组件,用于显示文本或图像。

import javax.swing.*;

// 显示文本或提示信息
public class IntroJLabel {
    public static void main(String[] args) {
        JFrame frame = new JFrame("IntroJLabel");
        frame.setBounds(400, 400, 300, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

//        构造方法有很多种,可以自行查看
        JLabel label = new JLabel("账号:",SwingConstants.LEFT);
        frame.add(label);

    }
}

提示

提示:各种组件的方法属性等,可以通过ctrl+鼠标右击自行查看
在这里插入图片描述

三、布局管理器

在 Java GUI 编程中,布局管理器用于控制组件在容器中的排列方式。常见的布局管理器有:

  1. FlowLayout:按照从左到右、从上到下的顺序排列组件。
  2. BorderLayout:将容器分为五个区域:北、南、东、西和中心,每个区域只能放置一个组件。
  3. GridLayout:将容器划分为网格,组件按照行和列的方式排列。

例如,使用FlowLayout

import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.FlowLayout;

public class FlowLayoutExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setLayout(new FlowLayout());

        JButton button1 = new JButton("Button 1");
        JButton button2 = new JButton("Button 2");
        JButton button3 = new JButton("Button 3");

        frame.add(button1);
        frame.add(button2);
        frame.add(button3);

        frame.setVisible(true);
    }
}

运行结果:
在这里插入图片描述

结语

本篇博客初步介绍了 GUI 编程的概念、基础组件和布局管理器,希望能够对你有所帮助!!!

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

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

相关文章

MySQL初阶——隔离级别之Read view

一、什么是快照? 当运行 select 查询语句时,才会触发快照,创建 read view 对象,把此时正在处理(未提交)的事务的 ID 都记下来,以便于后面查询时可以控制该读哪些事务的记录,不该读哪…

基于Multisim8路彩灯循环控制电路设计与仿真

1.彩灯能够自动循环点亮; 2.彩灯循环频率快慢可调; 3.彩灯具有8路输出。 4.自行设计脉冲信号产生电路。 链接:https://pan.baidu.com/s/1PhpVy58Y6-_uXnie8KYyzg 提取码:zjad

数学建模2:回归分析预测

回归模型是什么 回归分析预测模型是一种统计方法,用于研究变量之间的关系,并通过已知数据来预测一个变量的值。回归分析通常包括自变量和因变量,目标是建立一个回归模型来描述它们之间的关系。 简单来说回归模型就是找出一条直线或曲线来尽可…

若依框架的下载与配置

1. 若依版本 RuoYi-Vue前后端分离版。 2. 框架下载 2.1 后端框架下载 https://gitee.com/y_project/RuoYi-Vue 2.2 前端框架下载 https://github.com/yangzongzhuan/RuoYi-Vue3 3. 数据库配置 3.1 创建数据库 基于MySQL数据库,创建数据库:ry-vu…

【Eclipse系列】The word is not correctly spelled问题解决

问题描述:在eclipse编写代码时,偶尔会出现了The word is not correctly spelled的错误,但代码执行没有问题,查阅相关资料才发现是eclipse的拼写检查问题。 处理方法:在eclipse下的Window--Preference输入spelling&am…

【软件测试: jmeter工具】OS进程取样器调用python

在jmeter中有时候需要调用自定义函数进行加密、解密等拓展功能 本文通过识别验证码处理登录验证码为例,通过OS进程取样器,调用python函数实现 识别验证码的python函数源码 import base64 from io import BytesIO from PIL import Image import sys im…

nginx中的HTTP 负载均衡

HTTP 负载均衡:如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上,我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡: upstr…

OpenVLA-首个开源视觉语言动作大模型

官网:https://openvla.github.io/ 现在大模型已经卷到了机器人领域。 在视觉语言模型(VLM)的基础上, 加入机器人的动作(Action) 这一模态, 视觉语言动作大模型(VLA)是目前大模型应用…

网络知识总结

osi七层模型 osi七层模型分为:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层 应用层:客户端与服务端之间建立一个通话界面表示层:对数据进行语言转换&#xf…

Android Framework AMS(06)startActivity分析-3(补充:onPause和onStop相关流程解读)

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要解读AMS通过startActivity启动Activity的整个流程的补充,更新了startActivity流程分析部分。 一般来说,有Activ…

基于Springboot在线视频网站的设计与实现

基于Springboot视频网站的设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:idea 源码获取:https://do…

15.JVM垃圾收集算法

一、垃圾收集算法 1.分代收集理论 分代收集理论是JAVA虚拟机进行垃圾回收的一种思想,根据对象存活周期的不同将内存分成不同的几个区域;一般将JAVA堆内存分为新生代和老年代;根据每个分代特点选择不同的垃圾收集器; 在新生代中&am…

UE4 材质学习笔记12(水体反射和折射)

一.水体反射和折射 首先就是要断开所有连接到根节点的线,因为水有很多不同的节点成分,当所有其他节点都在用时 要分辨出其中一个是何效果是很难的。 虚幻有五种不同的方法可以创建反射,虚幻中的大多数场景使用多种这些方法 它们会同时运作。…

开源vGPU方案 HAMi实现细粒度GPU切分——筑梦之路

前言 为什么需要 GPU 共享、切分等方案? 在使用GPU的过程中我们会发现,直接在裸机环境使用,都可以多个进程共享 GPU,怎么到 k8s 环境就不行了? 1. 资源感知 在 k8s 中资源是和节点绑定的,对于 GPU 资源…

【Linux】僵尸进程和孤儿进程

一、僵尸进程 何为僵尸进程? 在 Unix/Linux 系统中,正常情况下,子进程是通过父进程创建的,且两者的运行是相互独立的,父进程永远无法预测子进程到底什么时候结束。当一个进程调用 exit 命令结束自己的生命时&#xff…

《编程入门与提高:开启数字世界的大门》

《编程入门与提高:开启数字世界的大门》 一、引言二、编程入门的基础知识(一)编程语言的选择(二)编程环境的搭建(三)编程的基本概念(四)编程的基本语法 三、编程入门的方…

哪些方法可以缓解面试紧张?

面试紧张是许多人在面对重要职业机会时的一种常见情绪。虽然一定程度的紧张可能激发人的潜能,但过度的紧张则可能影响到面试表现。为了缓解面试紧张,以下是一些有效的方法: 1.充分准备: 深入了解公司背景、职位要求以及公司文化…

地方门户分类信息网站源码系统 用户可以自由发帖 PHP+MySQL组合开发 带完整的安装代码包以及搭建部署教程

系统概述 地方门户分类信息网站源码系统是一个基于PHP和MySQL开发的强大平台,旨在帮助用户轻松搭建地方性的分类信息网站。该系统集成了众多实用功能,支持用户自由发帖、浏览和搜索各类信息,如二手交易、求职招聘、房屋租售、生活服务、商家…

Python网络请求库requests的10个基本用法

大家好!今天我们要聊聊Python中非常实用的一个库——requests。这个库让发送HTTP请求变得超级简单。无论你是想抓取网页数据还是测试API接口,requests都能派上大用场。下面我们就一起来看看如何使用requests完成一些常见的任务。 引言 随着互联网技术的…

空洞卷积:Atrous/Dilated convolution - 语义分割中多用到

没办法,我还是很多基础的、底层的模块不通透,读论文难免会受到阻碍,而且这现在科研任务很急了,必须要马上动手实验,全给我弄明白、特别是算法! 空洞卷积-可变形卷积-这一个个我都要。 空洞卷积据说在语义分…