java 图形界面设计,使用JPanel、JFrame 绘图,图形界面设计入门演示,各种主要绘图方法以及图片、文字插入
那什么是JPanel?JFrame 又是什么呢?让我们先来了解一下他们的区别吧:
JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel。如果你直接在JFrame上放也可以,但是首先不规范,然后要是过于复杂的界面你准备如何处理这么多控件呢?
对于java页面的布局,我的理解就是JFrame 就像是一张大的桌子,你可以直接把鱼呀,肉了,直接放在桌面上,没有盘子进行分类管理,这时我们就需要jpanel这样的盘子来放我们需要的一些控件。便于管理。
那接下来让我们首先使用JPanel 和 JFrame画一个圆:
JFrame 就相当于是一个窗口,你也可以把它理解成是一个画框,而此时JPanel 就相当于是一个画板,通常继承 JPanel 类的面板通过重写paint()方法进行绘图
package huitu.com;import javax.swing.*;
import java.awt.*;/***计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示* 器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,* 整个计算机屏幕共有480000个像素。像素是一个密度单位而厘米是长度单位两* 者无法比较*/
@SuppressWarnings({"all"})public class DrawingTest01 extends JFrame{// JFrame(框架)对应窗口,可以理解成是一个画框// 演示如何在面板上画出圆形// 定义一个面板private MyPanel mp=null;public static void main(String[] args) {new DrawingTest01();}public DrawingTest01() {// 初始化面板mp = new MyPanel();// 把面板放到窗口(画框)this.add(mp);//设置窗口大小this.setSize(400,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 当退出画框就退出程序this.setVisible(true);// 可以显示}
}/*** 绘图原理* √ Component类提供了两个和绘圈相关最重要的方法* 1. paint(Graphics)绘制组件的外观* 2. repaint刷新组件的外观* √当组件第一次在屏幕显示的时候程序会自动的用 paint方法来绘制组件* 在以下情况 paint将会被调用:* 1.窗口最小化再最大化* 2.窗口的大小发生变化* 3. repaint函数被调用*/// 1. 先定义一个MyPanel(面板),继承JPanel 类,画图形就在该面板上画
class MyPanel extends JPanel{/***说明:* 1. MyPanel 对象就是一个画板* 2. Graphics g 把 g 理解成一支画笔* 3. Graphics 提供了很多绘图的方法,可以画出各种图形以及填充颜色*/@Overridepublic void paint(Graphics g) {// 绘图方法super.paint(g);// 调用父类的方法完成初始化// 画出一个圆形g.drawOval(100,100,100,100);}
}
效果演示:
注意: 所画图形的大小是以窗口大小为参考系的,如果设置值大于了窗口大小,那我们是看不到完整的图形的,就好比你把画画得超出了画框,这种结果是非常不理想的
那么通过对JFrame 和JPanel 的初步了解,接下来让我们来看看他的一些主要方法和绘制各种各样的图形吧
package huitu.com;import javax.swing.*;
import java.awt.*;/*** 绘图方法:* ●Graphics类* Graphics类你可以理解就是画笔为我们提供了各种绘制图形的方法[参考dk帮助文档]*/
public class DrawingTest02 extends JFrame{private MyPanel_ mp = null;public static void main(String[] args) {new DrawingTest02();}public DrawingTest02() {// 初始化面板mp = new MyPanel_();// 把面板放到窗口(画框)this.add(mp);//设置窗口大小this.setSize(1000, 600);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 当退出画框就退出程序this.setVisible(true);// 可以显示}
}class MyPanel_ extends JPanel{@Overridepublic void paint(Graphics g) {// 绘图方法super.paint(g);// 调用父类的方法完成初始化// 绘制不同的图形//1.画直线drawLine(int x1, int y1, int x2, int y2)g.drawLine(10,10,100,100);// 确定两点坐标//2.画矩形边框 drawRect(int x, int y, int width, int height)g.drawRect(10,10,100,100);// g.draw3DRect(); 3D// 3.画椭圆边框 drawOval(int x, int y, int width, int height)g.drawOval(10,10,100,100);//4.填充矩形 fillRect(int x, int y, int width, int height)// 设置画笔颜色g.setColor(Color.red);g.fillRect(40,50,100,100);// 5.填充椭圆 fillOval(int int int width, int height)g.setColor(Color.orange);g.fillOval(100,100,100,200);// 6.画图片 drawImage(Image img, int x,int y,..)// 1. 加载图片资源(获取图片资源)Image image = Toolkit.getDefaultToolkit().getImage("D:\\风耀.jpg");g.drawImage(image,270,100,324,462,this);// 7.画字符串 drawString(String str,int x, int y)g.setColor(Color.BLUE);g.setFont(new Font("隶书",Font.BOLD,50));// 隶书 ,粗体,大小g.drawString("为战而生,至死方休",220,80);// 8.设置画笔的字体setFont(Font font)// 9.设置画笔的颜色setColor(Color)}
}
效果演示:
另外还有一种插入图片的方式:
重写paintComponent()方法其触发调用的机制和paint()方法相同
@Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 6.画图片 drawImage(Image img, int x,int y,..)// 1. 加载图片资源(获取图片资源)Image image = Toolkit.getDefaultToolkit().getImage("D:\\风耀.jpg");g.drawImage(image,270,100,324,462,this);}
当然我只是展示了其中一部分方法,其他的方法大家可以通过观看javaAPI查看 ,这也只是java图形界面设计的一点点基础,更多的创作思路还需要大家亲自去体验
java 图形界面设计,使用JPanel、JFrame 绘图,图形界面设计入门演示,各种主要绘图方法以及图片、文字插入相关推荐
- Java图形化界面设计——容器(JFrame)
Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...
- JAVA图形编程Swing之——JPanel绘图
JAVA图形编程Swing之--JPanel绘图 一直搞不清怎么在JPanel中绘2D图像,主要是不知怎样得到Graphics类的对像来画图,今天查了查资料,测试N种方法,终于搞明白.下面做一 ...
- java成绩管理系统设计背景_java学生成绩管理系统界面设计
关于学生成绩管理系统的界面设计:代码如下 数据库表设计 DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `username` varc ...
- Matlab gui用户图形设计界面学习笔记(一)——单个界面的菜单设计
Matlab gui用户图形设计界面学习笔记(一)--单个界面的菜单设计 弹出式菜单(pop-up menu)和下拉列表框(listbox) 实现功能:pop menu最初为 "请选择省份& ...
- 使用Java编写一个简单的 JFrame登陆注册界面(一)
使用Java awt 及 Swing 组件编写一个简单的JFrame登陆注册界面. 示例: 下面开始介绍如何编写. 通过调用实例化一个JFrame框架,在框架内嵌入JPanel,在JPanel上进行添 ...
- 【MATLAB】基本绘图 ( 绘制多图 | 设置图形对话框在 Windows 界面的位置和大小 | 在一个图形上绘制多个小图形 )
文章目录 一.绘制多图 1.绘制多图 2.代码示例 二.设置图形对话框在 Windows 界面的位置和大小 三.在一个图形上绘制多个小图形 一.绘制多图 1.绘制多图 存在一种绘图情况 , 需要同时展 ...
- java 2 图形设计卷i awt_java 2 图形设计卷i:awt
java 2 图形设计卷i:awt [2021-02-06 10:44:56] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&qu ...
- android java与界面的关联_Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)...
当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...
- 用java写qt界面_c++用Qt之后写图形界面是否比Java用swing简单
传统的GUI程序开发不区分前端和后台,统一使用C++代码管理,源文件中既有创建和设置控件的代码,又有处理业务逻辑的代码,非常杂乱. 使用C++代码直接创建控件,不管是从语法上讲还是从代码量上讲,看起来 ...
- 【图形】交互式绘图软件开发设计
一.理论基础 获取客户区的方法: a.在窗口类响应OnSize(),在类中,新建int变量,保存cx,cy b.在类函数中,用GetClientRect来获取 填充任意区域的方法: 参考:1.交互式绘 ...
最新文章
- 使用BCH提供的Cryptonize创建自己的加密代币
- 第7集 构造函数中抛出的异常
- 小米路由器是基于openWRT的,为啥小米路由器不开源?
- 深入浅出Yolo系列之Yolov3Yolov4Yolov5核心基础知识完整讲解
- 软考-信息系统项目管理师-量化的项目管理
- VM虚拟机运行Windows11出现蓝屏
- ccs 移植创建新工程_LiteOS裸机驱动移植05 | E53_SF1智慧消防扩展板驱动及使用
- php的类图怎么生成_PHP网站怎么划UML类图?
- linux 内核参数分析,linux 内核参数VM调优 之 参数调节和场景分析
- 大数据分析的思路与流程
- Python如何输出格式清晰的dict
- springcloud 心得记录
- 网页设计找灵感——汽车酷站赞赏
- 武汉加油!爬取百度迁徙地图数据+城市出行强度
- Pillow 10行代码给营业执照模板写数据,批量生产
- 【Unity3D】游戏配表Excel转Txt,并且打成ab包
- 使用MetaMask客户端获取以太坊测试网络ropsten测试币
- 摆脱处男_是时候摆脱我们的密码了
- 【Linux】主函数的三个形参
- 商业Web应用程序的用户界面设计