Java 图形程序设计
- Java 中图形用户界面的最基本组成是组件
- 组件要放置在容器中才可以显示
两种基本 GUI 程序设计类库
- AWT(抽象窗口工具箱)
- Java 1.0 时出现,基本的 GUI 程序设计类库。基于”对等体“支持
- Swing
- Java 1.2 时作为标准库的一部分。提供了更强大的用户界面组件
框架(frame)
顶层窗口被称为框架。Swing 使用 JFrame 类表示框架。AWT 使用 Frame 类表示框架。
JFrame 是少数不绘制在画布上的 Swing 组件之一。
JFrame 的使用
Swing 组件必须在事件分配线程中进行配置
Java
public class SimpleFrameTest{
public static void main(String[] args){
EventQueue.invokeLater(() -> {
// (1)
});
}
}
- 在这里初始化 JFrame 等组件
- 新建一个 JFrame 对象
MyFrame extends JFrame{}
new JFrame()
- 设置合适框架大小
setSize(int width, int height)
- 使用用户系统的分辨率信息
Toolkit.getDefaultToolkit().getScreenSize()
,取得其中的width
和height
属性
- 使用用户系统的分辨率信息
- 其他信息
- 设置框架位置
void setLocation(int x, int y)
,x、y 是距离用户屏幕左上角的偏移 - 设置框架标题
void setTitle(String title)
- 设置图标
void setIconImage(Image image)
- 设置框架关闭时的默认操作
void setDefaultCloseOperation(int operation)
JFrame.EXIT_ON_CLOSE
:退出程序JFrame.HIDE_ON_CLOSE
:隐藏框架JFrame.DISPOSE_ON_CLOSE
:释放框架JFrame.DO_NOTHING_ON_CLOSE
:什么都不做
- 设置框架可见性
void setVisible(boolean b)
- 设置框架位置
在组件中显示信息
- 将组件添加至窗格:
frame.add(Component c);
- 定义一个扩展
JComponent
的类 - 覆盖其中的
paintComponent
方法 - 向
frame.add()
中传递你所创建的组件类
- 定义一个扩展
paintComponent
方法- 需要一个 Graphics 类型参数
- 大多数情况下,无需自行调用
- 绘制文本:
drawString(String s, int x, int y)
- 使用组件首选大小:
pack()
方法- 使组件大小适合其中的组件
- 通常在设置完组件后调用
处理 2D 图形
若所用版本支持 Java 2D,paintComponent
可以获得一个 Graphics2D
类对象(需要先进行类型转换)。
---
title: 常用的几何图形类
---
classDiagram
class Point2D
class Line2D
class Rectangle2D
class Ellipse2D
Shape <|--Line2D
Shape <|--Rectangle2D
Shape <|--Ellipse2D
Shape <|--Point2D
%% 其中,每一个2D类都有Float和Double两个静态内部类
其中,每一个2D类都有Float和Double两个静态内部类
使用颜色
java.awt.Color 类
Color(int r, int g, int b)
:使用 RGB 值创建颜色- 13 种预定义常量:
Color.BLACK
、Color.BLUE
、Color.CYAN
、Color.DARK_GRAY
、Color.GRAY
、Color.GREEN
、Color.LIGHT_GRAY
、Color.MAGENTA
、Color.ORANGE
、Color.PINK
、Color.RED
、Color.WHITE
、Color.YELLOW
绘制操作
- Graphics2D 类:
setPaint(Paint p)
- 为后续绘制操作(
fill()
、drawString()
等)选择颜色
- 为后续绘制操作(
- Graphics 类:
setColor(Color c)
设置组件颜色
- 前景色:
setForeground(Color c)
- 背景色:
setBackground(Color c)
填充图形
fill(Shape s)
:使用当前颜料填充图形
设置字体
java.awt.Font 类
Font(String name, int style, int size)
:创建字体name
:字体名称style
:字体风格Font.PLAIN
:普通Font.BOLD
:粗体Font.ITALIC
:斜体Font.BOLD + Font.ITALIC
:粗斜体
size
:字体大小
-
列出当前系统支持的字体:
String[] getAvailableFontFamilyNames()
五种映射到客户机上实际字体的逻辑字体名
- SansSerif
- Serif
- Monospaced
- Dialog
- DialogInput
字符串位置
Java
FontRenderContext context = g2.getFontRenderContext();
Rectangle2D bounds = font.getStringBounds(message, context);
double stringWidth = bounds.getWidth();
double stringHeight = bounds.getHeight();
double ascent = -bounds.getY();
显示图像
- 表示图像文件的类:
java.awt.Image
- 读图像:
Image image = new ImageIcon(filename).getImage();
- 画图:
drawImage(Image img, int x, int y, ImageObserver observer)
img
:图像x
、y
:图像左上角的坐标observer
:图像观察者,通常传递null