Java学习笔记:GUI基础
一:我们使用到的java GUI的API可以分为3种类:
- 组件类(component class)
- 容器类(container class)
- 辅助类(helper class)
1:组件类:组件类是用户用来创建界面的,Component类的实例可以显示在屏幕上,Component类是包含容器类的所有用户界面的根类,JComponent是轻量级组件类的根类。
2:容器类:
| 容器类 | 说明 |
|---|---|
| java.awt.Container | 对于组件分组,Frame(框架),Panel(面板)都是它的子类 |
| javax.swing.JFrame | 一个不能包含在另一个窗口的窗口,用于存放其他的组件 |
| java.swing.JPanel | 可做画图的画布 |
| java.swing.JApplet | Applet的一个子类 |
| java.swing.JDialog | 一个弹出式窗口或者消息框 |
3:辅助类:
| 辅助类 | 说明 |
|---|---|
| java.awt.Graphics | 绘制字符串,线,和简单图形 |
| java.awt.Color | 处理颜色,为JFrame指定背景色 |
| java.awt.Font | 指定文字的字体,风格 |
| java.awt.FontMetrics | 获取字体属性 |
| java.awt.LayoutManger | 布局管理器 |
二:框架,创建一个用户界面需要创建一个框架来呈放用户界面的组件。一般我们用JFrame,有了框架之后我们就可以向框架中加入组件等东西。
三:布局管理器
就是管理我们怎样在一个框架上布局东西的,实际上我们先将东西按照一定规则放置在布局管理器上,然后布局管理器再将东西放到框架之上,然后就呈现出来了我们想要的格式。
1:FlowLayout:默认按照从左往右的顺序排列组件,如果一行放不下,放到下一行。有三种对齐方式可供选择。
| UML | 作用 |
|---|---|
| -aligment:int | 对齐方式 LEFT=0,CENTER=1,RIGHT=2,LEADING=3 |
| -hgap:int | 布局管理器的水平间隔 |
| -vgap:int | 布局管理器的垂直间隔 |
| +FlowLayout() | 默认的构造方法 |
| +FlowLayout(aligment:int) | 设置默认对齐方式 |
| +FlowLayout(aligment:int,hgap:int,vgap:int) | 设置对齐方式,水平间隔和垂直间隔 |
2:GridLayout:网格布局管理器,可以指定每行每列放几个元素,但是行的优先级比列高。
| UML | 作用 |
|---|---|
| -rows:int | 布局管理器中的行数比列优先 |
| -columns:int | 布局管理器的列数 |
| -hgap:int | 布局管理器的水平间隔 |
| -vgap:int | 布局管理器的垂直间隔 |
| +GridLayout() | 默认的构造方法 |
| +GridLayout(rows:int,columns:int) | 设置指定行数的列数的GridLayout |
| +GridLayout(rows:int,columns:int,hgap:int,vgap:int) | 设置行数,列数,水平间隔和垂直间隔 |
3:BorderLayout:将容器分为5个部分:东,南,西,北,中,可以用BorderLayout.EAST ,BorderLayout.SOUTH,BorderLayout.WEST,BorderLayout.NORTH,BorderLayout.CENTER分别设置组件的位置。
| UML | 作用 |
|---|---|
| -hagp:int | 水平间隔 |
| -vgap:int | 垂直间隔 |
| +BorderLayout() | 创建一个默认的BorderLayout |
| +BorderLayout(hgap:int,vgap:int) | 创建指定水平间隔和垂直间隔的管理器 |
4:cardLayout:顾名思义,就像一张张卡片一样去管理我们的每一个Panel,像一副扑克牌,只最上面的才会被看到。一般我们CardLayout card = new CardLayout然后再JPanel cardPanle = new JPanel(card)这样cardPanel就是一个CardLayout的类型的了。
| UML | 作用 |
|---|---|
| -hagp:int | 水平间隔 |
| -vgap:int | 垂直间隔 |
| +CardLayout() | 创建默认的布局管理器 |
| +CardLayout(hagp:int,vgap:int) | 指定水平和垂直间隔 |
| +card.first(cardPanel) | 显示cardPanel的第一张卡片 |
| +card.last(cardPanel) | 显示cardPanel的最后一张卡片 |
| +card.pervious(cardPanel) | 显示cardPanel的前一张卡片 |
| +card.next(cardPanel) | 显示cardPanel的后一张卡片 |
| +card.show(cardPanel,String name) | 显示cardpanel中名称为name的卡片 |
四:使用面板
我们很难使用一种布局管理器实现我们想要的效果,所以我们通常使用面板将我们能看到的区域划分,然后在每一个部分上添加上我们想使用的组件,然后再将面板添加到框架中,所以基本步骤就是这样创建面板->往面板上添加组件->将面板添加到框架中。
Java学习笔记:GUI基础的更多相关文章
- Java学习笔记之---基础语法
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...
- java学习笔记之基础篇
java选择语句之switch //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...
- Java学习笔记-GUI
Java也提供图像化编程 图形化 GUI(图形用户界面) GUI Graphical User Interface(图形用户接口) 用图形的方式,来显示计算机操作的界面,这样更方便更直观 CLI Co ...
- java学习笔记之基础语法(一)
1.java语言基础由关键字.标识符.注释.常量和变量.运算符.语句.函数和数组等组成. 2.1关键字 定义:被java语言赋予了特殊含义的单词 特点:关键字中所有的字母都是小写. 2.2用于定义数据 ...
- JAVA学习笔记之基础概念(一)
一.Java 简介: Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称. 由 James Gosling和同 ...
- java学习笔记之基础知识
1.class不加修饰符默认default,只在当前包里能用. 2.构造函数前面的修饰符的作用类似class的,限制引用的权限. 3.java对象的创建其实就是类的实例化,类的实例化就是在堆上copy ...
- java学习笔记之基础语法(二)
1.数组: 概念:同一种类型数据的集合,其实,数组就是一个容器 优点:可以方便的对其进行操作,编号从0开始,方便操作这些元素. 2,数组的格式 元素类型[]数组名=new 元素类型[数组元素个数]: ...
- Java学习笔记之基础语法(数组)
数组 数组概述:是具有相同数据类型的数据的集合 数组的定义:数据类型 数组名 [] 数组特点: 1,数组是引用数据类型. 2,数组值用大括号,元素之间用逗号隔开,元素的个数是0-N个 3,数组长度是固 ...
- Java学习笔记之基础语法(顺序,条件,循环语句)
顺序结构:自上而下 条件分支选择结构: if条件语句 1,一旦某一个分支确定执行以后,其他分支就不会执行.if后面的条件必须是boolean类型 2,if 后面如果不加大括号,默认相邻的下一 ...
- Java学习笔记之基础语法(数据类型)
8种基本数据类型 整型: byte[1字节] short[2字节] int[4字节] long[8字节] 1,四种整型之间的区别:申 ...
随机推荐
- mogoose 创建数据库并增删改查
下载 npm i mongoose -s 连接数据库 const mongoose = require("mongoose"); mongoose.connect(dbURL); ...
- requests接口自动化-动态关联text/html格式
动态关联,前一个接口返回的值为后一个接口请求的参数. # 动态关联 import requests def test_cookies(): # 以百度为例 r_baidu=requests.get(' ...
- ASP.NET Core 学习笔记 第二篇 依赖注入
前言 ASP.NET Core 应用在启动过程中会依赖各种组件提供服务,而这些组件会以接口的形式标准化,这些组件这就是我们所说的服务,ASP.NET Core框架建立在一个底层的依赖注入框架之上,它使 ...
- ubuntu Nginx+tomcat 部署web项目
最近学习了一下java web方面的知识,最后终于把项目部署到了阿里云服务器上,还是遇到了一些难点,记录总结一下 首先就是网上资料中,jdk都比较老了,最新的jdk14,没有了jre,这样导致了tom ...
- 数据结构与算法——弗洛伊德(Floyd)算法
介绍 和 Dijkstra 算法一样,弗洛伊德(Floyd)算法 也是一种用于寻找给定的加权图中顶点间最短路径的算法.该算法名称以创始人之一.1978 年图灵奖获得者.斯坦福大学计算机科学系教授罗伯特 ...
- C++核心编程 2 引用
引用的基本使用 作用:给变量起别名 ,语法:数据类型 & 别名 = 原名 注意:引用必须初始化,且初始化之后,就不可更改. 引用做函数参数 作用:函数传参时,可以利用引用的技术让形参修饰实参 ...
- 关于我的Visual Studio2017修改安装重试9次失败问题解决
环境:windows vs2017 现象描述:本来我的vs可用的,一天想暗爪QT,插件安装好了不能创建QT项目,准备升级,然后问题出现了. 过程: 把人弄崩溃了,二三十k的速度在走,半路又终止.根本不 ...
- Data Interoperability Tools
这里的工具貌似没有对应函数~~~
- Analysis Tools(分析工具)
分析工具 1.叠加分析 # Process: 交集取反 arcpy.SymDiff_analysis("", "", 输出要素类, "ALL" ...
- 洛谷3176 [HAOI2015]数字串拆分 (矩阵乘法+dp)
qwq真的是一道好题qwq自己做基本是必不可能做出来的. 首先,如果这个题目只是求一个\(f\)数组的话,那就是一道裸题. 首先,根据样例 根据题目描述,我们能发现其实同样数字的不同排列,也是属于不同 ...