Java GUI入门教程

article/2025/11/1 6:04:55

人生的烦恼,多在于知道的太多,而做的太少。

Java程序中开发GUI页面。下面我主要对Java中实现图像管理、图形绘制和颜色管理等做出介绍,与此同时,Swing包也做出一部分介绍。

像素与坐标

用于表示图像像素数目的称为图像分辨率。显示器用来显示图像的像素数目称为显示器分辨率
坐标:Java中的坐标系统是从屏幕的左上角为0,0
Java中的坐标系统

颜色表示

颜色的设置
用Color类,在Java中Color类将颜色按照RGB格式进行封装。RGB格式中,红蓝绿三原色的取值范围都是0~255。若某种颜色取值为0,则表示该颜色不起任何作用;若取值为255,则表示起最大作用。如果将三种颜色进行叠加就可以生成一种新的颜色,合成的RGB颜色的值为“000000”表示黑色,“ffffff”表示白色。首先调用Color的构造函数,产生一个Color对象,再用Graphics类里的setColor把它设置到Graphics对象上。
方法:setColor(Color c)
功能:设置图形对象的颜色为参数所指定的颜色

Color类的构造方法:
Color(int,int,int);
功能:根据指定0~255之间的红、绿、蓝(RGB)的值生成新的颜色。这样我们就可以创造出自己想要的颜色。Color中已经定义好的各种颜色常数我们也可以方便地直接使用:

英语颜色
red
green绿
blue
white
black
yellow
pink
cyan
orange
gray
darkGray深灰
lightGray浅灰

绘制图形

Graphics类提供多种几何图形功能, 通过它的方法可以实现画线、几何图形等。

画线

方法: drawLine(int x1, y1,int x2,int y2),
功能:在(x1,y1)和(x2,y2)这两个坐标之间画出一条直线,其中:
参数x1表示第1个点的x轴坐标
参数y1表示第1个点y轴坐标
参数x2表示第2个点x轴坐标
参数y2表示第2个点y轴坐标

绘制普通矩形

Java提供了3种矩形的绘制方式,我们先看普通型:

darwRect(int x,int y,int width,int height),它的功能是画出一个矩形,其中:
参数 x代表矩形左上角的x坐标
参数y代表矩形左上角的y坐标
参数width表示矩形的宽度
参数height表示矩形的长高度
方法:fillRect(int x,int y,int width,int height),
功能:使用当前图形对象的颜色填充参数指定的矩形,其中:
参数x为x轴坐标
参数y为y轴坐标
参数width为矩形的宽度
参数height为矩形的高度

绘制立体矩形

方法:draw3DRect(int x,int y,int width,int height,boolean raised);和fill3DRect(int x,int y,int width,int height,boolean raised);
方法draw3DRect(int x,int y,int width,int height,boolean raised):其作用为绘制一个突出的三维立体矩形,其中:
参数x为x轴坐标
参数y为y轴坐标
参数width为矩形的宽度
参数height为矩形的高度
参数raised表示立体矩形的状态,raised为true,则立体矩形为凸起状态;raised为false,则立体矩形为凹下状态。
方法draw3DRect(int x,int y,int width,int height,boolean raised);其作用为绘制一个突出的三维立体矩形并使用当前图形对象的颜色对其进行填充,其中:
参数x为x轴坐标
参数y为y轴坐标
参数width为矩形的宽度
参数height为矩形的高度
参数raised表示立体矩形的状态,raised为true,则立体矩形为凸起状态;raised为false,则立体矩形为凹下状态。

绘制圆角矩形

方法:drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)和fillRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)。
方法drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)其作用为绘制一个圆角矩形,其中:
参数x为x轴坐标
参数y为y轴坐标
参数width为矩形的宽度
参数height为矩形的高度
参数arcWidth为圆弧的横向直径
参数arcHeight为圆弧的纵向直径
方法fillRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)其作用为绘制一个圆角矩形并使用当前图形对象的颜色对其进行填充,其中:
参数x为x轴坐标
参数y为y轴坐标
参数width为矩形的宽度
参数height为矩形的高度
参数arcWidth为圆弧的横向直径
参数arcHeight为圆弧的纵向直径

Swing

主要理解组件、事件和监听器的关系和应用。
应用示例:

package lbz.jsdf.c04;import javax.swing.JFrame;import lbz.jsdf.c03.RocketPanel;/** * @author LbZhang* @version 创建时间:2015年12月14日 下午10:15:28 * @description * 测试使用Swing的一些常见用法* * 抽象窗口工具包(AWT)* 和Swing包*/
public class PushCounter {public static void main(String[] args) {JFrame jframe = new JFrame("pushcounter");jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jframe.getContentPane().add(new PushCounterPanel());jframe.pack();jframe.setVisible(true);}}///----------------------------
package lbz.jsdf.c04;import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;/** * @author LbZhang* @version 创建时间:2015年12月15日 上午9:29:55 * @description 类说明*/
public class PushCounterPanel extends JPanel {private int count;private JButton pushBtn;private JLabel label;public PushCounterPanel(){count=0;pushBtn = new JButton("Push me");pushBtn.addActionListener(new ButtonListener());label = new JLabel("pushes:"+count);add(pushBtn);add(label);setBackground(Color.cyan);setPreferredSize(new Dimension(100,40));}private class ButtonListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {count++;label.setText("pusher:"+count);}}
}

下面给出几组源码样例作为分享

雪人

package lbz.jsdf.c01;import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;import javax.swing.JPanel;/** * @author LbZhang* @version 创建时间:2015年12月14日 下午5:14:11 * @description 类说明*/
public class SnowmanPanel extends JPanel{private final int MID = 150;private final int TOP = 50;public SnowmanPanel(){setPreferredSize(new Dimension(300,225));setBackground(Color.cyan);//背景色的设置}/*** 当图形组件在屏幕上渲染的时候会自动调用该组件的paintComponent方法。* 注意:paintComponent方法接收一个Graphics对象作为参数,Graphics对象* 定义一个特定图像的上下文,我们可以与之交互。* * draw a snowman*/public void paintComponent(Graphics page){//确保背景色的绘制super.paintComponent(page);page.setColor(Color.blue);page.fillRect(0, 175, 300, 50);//Groundpage.setColor(Color.yellow);page.fillOval(-50, -50, 80, 80);page.setColor(Color.white);page.fillOval(MID-20, TOP, 40, 40);page.fillOval(MID-35, TOP+35, 70, 50);page.fillOval(MID-50, TOP+80, 100, 60);page.setColor(Color.black);page.fillOval(MID-10, TOP+10, 5, 5);page.fillOval(MID+10, TOP+10, 5, 5);page.drawArc(MID-10, TOP+20, 20, 20, 190, 160);page.drawLine(MID-25, TOP+60, MID-50, TOP+20);page.drawLine(MID+55, TOP+60, MID+55, TOP+60);page.drawLine(MID-20, TOP+5, MID+20, TOP+5);page.fillRect(MID-15, TOP-20, 30, 25);}}

雪人

火箭

package lbz.jsdf.c03;import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;import javax.swing.JPanel;/*** @author LbZhang* @version 创建时间:2015年12月14日 下午9:30:42* @description 类说明*/
public class RocketPanel extends JPanel {private int[] xRocket = { 100, 120, 120, 130, 130, 70, 70, 80, 80 };private int[] yRocket = { 15, 40, 115, 125, 150, 150, 125, 115, 40 };private int[] xWindow = { 95, 105, 110, 90 };private int[] yWindow = { 45, 45, 70, 70 };private int[] xFlame = {70,70,75,80,90,100,110,115,120,130,130};private int[] yFlame = {155,170,165,190,170,175,160,185,160,175,155};public RocketPanel() {setBackground(Color.cyan);setPreferredSize(new Dimension(200, 200));}public void paintComponent(Graphics g) {super.paintComponent(g);g.setColor(Color.red);g.fillPolygon(xRocket, yRocket, xRocket.length);g.setColor(Color.black);g.fillPolygon(xWindow, yWindow, xWindow.length);//      g.drawPolyline(xFlame, yFlame, xFlame.length);g.setColor(Color.red);g.drawPolyline(xFlame, yFlame, xFlame.length);}
}

火箭

多个圆

package lbz.jsdf.c02;import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;import javax.swing.JPanel;/** * @author LbZhang* @version 创建时间:2015年12月14日 下午9:17:54 * @description 类说明*/
public class SplatPanel extends JPanel {private Circle cir1,cir2,cir3,cir4,cir5;public SplatPanel(){cir1 = new Circle(30, Color.red, 70, 35);cir2 = new Circle(50, Color.green, 20, 20);cir3 = new Circle(100, Color.cyan, 60, 85);cir4 = new Circle(45, Color.yellow, 170, 30);cir5 = new Circle(60, Color.blue, 200, 60);setPreferredSize(new Dimension(300,200));setBackground(Color.black);}/*** 自动渲染函数的构建*/public void paintComponent(Graphics gp){super.paintComponent(gp);cir1.draw(gp);cir2.draw(gp);cir3.draw(gp);cir4.draw(gp);cir5.draw(gp);}
}package lbz.jsdf.c02;import java.awt.Color;
import java.awt.Graphics;/** * @author LbZhang* @version 创建时间:2015年12月14日 下午9:19:17 * @description 类说明*/
public class Circle {private int diameter,x,y;private Color color;public Circle(int size,Color shade,int upperX,int upperY){this.diameter = size;this.color = shade;this.x = upperX;this.y = upperY;}public void draw(Graphics g){g.setColor(color);g.fillOval(x, y, diameter, diameter);}}

自管理


http://chatgpt.dhexx.cn/article/77xn4Xdm.shtml

相关文章

【JAVA】GUI编程

GUI的概念 Swing概述 容器组件 布局管理器 常用组件 事件处理 对话框 GUI的概念 GUI(Graphical User Interface)即图形用户界面,它能够使应用程序使用起来更加便捷,看上去更加友好。 Swing概述 Swing是纯Java组件,使得…

Java--GUI编程

目录 GUI的概念 Swing概述 ​编辑 容器组件 布局管理器 常用组件 对话框 内部类 GUI的概念 GUI(Graphics User Interface),图形用户界面,是指采用图形方式显示的计算机操作用户界面,是计算机与其使用者之间的…

GUI编程(java)

1 GUI的概念 GUI(Graphical User Interface)即图形用户界面,它能够使应用程序看上去更加友好,更加方便用户操作。 2 Swing概述 Swing是纯Java组件,使得应用程序在不同的平台上运行时具有相同外观和相同的行为&#x…

Java GUI 开发

Swing图形用户界面 GUI 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面,包括窗口、菜单、按钮等各种屏幕组件。 Swing Swing是JAVA的一个GUI工具包&a…

GUI (java)

GUI 一.GUI概念二.Swing概述三.容器组件四.常用容器1.窗体(1) JFrame类的构造方法(2) JFrame类的常用方法 2.面板(1)JPanel类的构造方法(2)JPanel类的常用方法 五.布局管理器1. FlowLayout 流式布局(1)FlowLayout构造方法 2.BorderLayout 边界布局3.GridLayout 网格布局 六.常用…

javaGUI

GUI 1.GUI的概念: GUI(Graphical User Interface)即图形用户界面,它能够使应用程序看上去更加友好; 2.Swing概述: Swing是纯Java组件,使得应用程序在不同的平台上运行时具有相同外观和相同的行…

GUI(java)

GUI基本介绍: 1.GUI是什么? GUI的全称为Graphical User Interface,图形化界面或图形用户接口,是指采用图形方式显示 的计算机操作环境用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简 便易用。…

Java中的GUI

记录Java中的GUI知识,Java中的GUI相关编程思想是需要我们去理解和掌握的。最好可以使用基础的swing组件去构建出界面。完整记录使用swing组件进行登录页面开发,提供完整代码 文章目录 前言一、swing组件二、swing组件的使用1.窗口2.面板 三、swing组件的…

Java之GUI简单介绍

GUI介绍(一)常见的组件及简单监听器 第一个窗口程序容器控件JLabel控件简单事件处理文本框JTextFiled复选框JCheckBox下拉列表JComboBox布局管理器LayoutManager边界布局管理器BorderLayout手工布局 前段时间学了GUI,总体上概念还是有点模糊&…

JAVA GUI(图形用户界面)

1.GUI概述 目前,我们编写的程序都是基于控制台的程序GUI(Graphical User Interface)即图形用户界面,它能够使应用程序看上去更加友好 2.Swing概念 位于javax.swingSwing是纯java组件,使得应用在不同平台中有相同的外观和行为 3.什么是组件,…

Java——GUI(图形用户界面)

学习目标: 1、掌握布局管理器、AWT事件处理机制以及常用事件 2、熟悉Swing组件的使用 3、了解GUI开发的相关原理和技巧 GUI全称是GraphicalUser Interface,即图形用户界面。顾名思义,就是应用程序提供给用户操作的图形界面,包括…

Java GUI——Java图形用户界面

Java GUI——Java图形用户界面 1、Java GUI概述 1.1、GUI的前世今生 早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。如:Windows中的DOS窗口。后来,Apple公司率先在电脑的操作系统中实现了图…

APIGateway 简介

1. APIGateway是什么 APIGateway 即API网关,所有请求首先会经过这个网关,然后到达后端服务,有点类似于Facade模式。API网关作为系统接口对外的统一出口,可以减少调用方对服务实现的感知。 没有API网关时的结系统构如下图&#xff…

aws api gateway 创建一个REST API作为Amazon S3代理

你可能想把样本API导入为Amazon S3的代理,如样本API作为Amazon S3代理的OpenAPI定义所示。关于如何使用OpenAPI定义导入API的说明,请参阅使用OpenAPI配置REST API。 创建API资源来代表Amazon S3资源 我们将使用API的根(/)资源作…

【AWS系列】第七讲: AWS Serverless之API Gateway

目录 序言 一、基本介绍 1.1 RESTful API 1.2 HTTP API 1.3 WebSocket API 2、使用介绍 2.1 新建 2.2 选类型 2.3 点击构建 2.4 输入参数 2.5 点击创建 2.6 新建方法 2.6 方法测试 三、总结 序言 初步研究一下API Gateway,加油 一、基本介绍 Amazon AP…

一文搞懂 Service Mesh 和 API Gateway 关系和区别

公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 关于Service Mesh和API Gateway之间的关系,这个问题过去两年间经常被问起,社区也有不少文章和资料给出解答。其中不乏 Christian Posta 这样的网红给出过深度…

aws api gateway 构建一个私有的REST API

你将创建一个私有的REST API。客户只能从你的亚马逊VPC内访问该API。该API与公共互联网隔离,这是一个常见的安全要求。 首先,你使用AWS CloudFormation模板来创建一个亚马逊VPC、一个VPC端点、一个AWS Lambda函数,并启动一个亚马逊EC2实例&am…

AWS Lambda 搭配 Amazon API Gateway (REST API)

AWS Lambda 搭配 Amazon API Gateway (REST API) AWS Lambda 是一种无伺服器、事件推动的运算服务,而 Amazon API Gateway 可以让开发人员轻松地建立、发布、维护、监控和保护任何规模的 API,使用 API Gateway 可以建立 RESTful API 和 WebSocket API&a…

AWS API Gateway与AWS Lambda代理集成构建REST API

项目地址 https://github.com/JessicaWin/aws lambda分支为自动创建API Gateway REST API资源的部署方式apigateway分支为自定义API Gateway REST API资源的部署方式 创建Lambda Handler 创建父模块 使用idea创建一个maven工程: File->New->Project 在左侧菜单栏中…

基于 Amazon API Gateway 的跨账号跨网络的私有 API 集成

一、背景介绍 本文主要讨论的问题是在使用 Amazon API Gateway,通过 Private Integration、Private API 来完成私有网络环境下的跨账号或跨网络的 API 集成。API 管理平台会被设计在单独的账号中(亚马逊云科技提供的是多租户的环境),因为客观上不同业务…