Java Swing GUI学习(一)

2019-09-27   90 次阅读


date: 2019-09-27 16:10:47

1.GUI组件的左上角坐标默认为(0,0)
2.从左上角到右下角,水平坐标x与垂直坐标y增加
也就是说其坐标系如下

——————————————————————>x
|
|
|
|
|
|
|
|
y

3.坐标的单位是像素

在执行paint方法时,系统会传递一个指向特定平台的Graphics子类的图形对象g

Graphics2D是Graphics的抽象子类

Swing组件实在原来AWT组件上扩展而来的
JButton
JCheckBox
JScrollbar
都是JComponent类的子类

Component类

包含paint,repaint类,可以在屏幕上绘制组件

Container类

容纳相关组件
包括add方法,用来添加组件
包括setLayout方法,用来设置布局

顶层容器(JFrame,JDialog,JApplet)
JFrame
主窗口
JFrame(String title);
JFrame f1=new JFrame(String title);
创建一个标题为title的主窗口

JDialog

JApplet

中间层容器(一般用途,特殊用途)

一般用途
JPanel
JScrollPane
JSplitPane等

特殊用途

JPanel
JPanel j1=new JPanel();
默认使用FlowLayout布局

JScrollPane

JToolBar
工具栏

原子组件

JButton
按钮组件
JButton button = new JButton("按钮名称");

JLabel
显示文本的组件
JLabel label = new JLabel("文本标签显示内容");

TextArea
TextArea ta=new TextArea("输入区域默认内容");

JTextField
用于输入的文本域
JTextField useText = new JTextField(20);
参数为column数

JPasswordField
和输入文本域类似,,但是输入的信息会以.代替,保证密码(password)的安全性

JMenuBar
菜单条
JMenuBar jb=new JMenuBar();

布局

example:
setLayout(new FlowLayout());
f.setLayout(new FlowLayout());

BorderLayout
FlowLayout
JPanel默认使用的布局管理器,只是简单地把组件放在一行,若容器不足够容纳所有组件,则新起一行
GridLayout
按照指定的行数和列数将界面分成格子

BoxLayout
将组件放在单一的列或行中

SpringLayout
能够精确指定组件之间的间距

CardLayout

内部类可以非常方便的编写事件驱动程序

事件处理

鼠标移动,单双击鼠标各个按钮,单击按钮等等
Swing通过事件对象来包装事件

事件源
与用户进行交互的GUI组件,表示事件来自于哪个组件或者对象

事件监听器
负责监听事件并作出响应
一个事件源可以注册多个事件监听器,每个监听器又可以对多种事件进行响应
通过事件源的addxxxListener方法被注册到某个事件源上
要实现事件监听器接口就要实现接口中所有的方法,即便是一对空的花括号也要写,即空方法体也要写
如果有Adapter适配器类,那就不需要写空方法体,因为空方法体已经提前实现好了

事件对象
封装了有关已发生的事件的信息
ActionEvent
发生在按下按钮,选择了一个项目,在文本框中按下回车键

ItemEvent

ChangeEvent

零散实用

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
设置程序默认关闭功能

f.setSize(350,200);
第一个参数为宽度width,第二个参数为高度height

f.setVisible(true);
设置界面可见

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议