Core Java GUI
GUI(图形编程)基础
(Graphical User Interface,GUI)
AWT(Abstract Window Toolkit):抽象窗口工具集
AWT是JDK的一部分,在开发图形应用程序和Applet小程序时使用。
AWT为用户界面程序提供:组件(按钮、标签、下拉菜单、画布、文本框、复选框、列表等),事件类、监听器、图形处理tools、2D图形等支持。
AWT中4个主要的类用于确定容器内部组件的位置和形状:
Component:组件
Container:容器
LayoutManager:布局管理器
Graphic:图形
具体介绍见:java.awt.*;
Frame:窗口,它是Window的子类,顶级窗口容器。(java.awt.Frame)
Frame可以添加组件、设置布局管理器、设置背景色等。
Panel:面板,它是Container的子类,它提供了建立应用程序的容器。
GUI框架设计:
1.创建主框架:JFrame frame = new JFrame("Calculator"); //标题:Calculater
2.创建获取框架的构造容器:Container contentPane= frame.getContentPane(); // 获取容器
GUI/FrameTest.java
1 package GUI;
2
3
4
5 import java.awt.BorderLayout;
6
7 import java.awt.Color;
8
9 import java.awt.Frame;
10
11 import java.awt.Panel;
12
13
14
15 public class FrameTest extends Frame {
16
17 /**
18
19 * @param args
20
21 */
22 public static void main(String[] args) {
23
24 // TODO Auto-generated method stub
25
26 FrameTest f = new FrameTest("FrameTest");//调用构造方法
27
28 f.setSize(100,100);//设置窗口大小,default:(0,0)
29
30 f.setBackground(Color.GREEN);//设置背景色,default:red
31
32 f.setVisible(true);//设置窗口是否可见,default:false
33
34
35
36 Panel p = new Panel();//创建Panel对象p
37
38 p.setSize(50,50);
39
40 f.add(p);//调用add()方法把panel添加到frame中
41
42 }
43
44
45
46 public FrameTest(String frame){
47
48 super(frame);//调用父类的构造方法
49
50 }
51
52 }
AWT布局管理器:
BorderLayout:边界布局。将容器分east、south、west、north、center,当向容器添加组件时,要指明组件放置的区域。
FlowLayout:顺序布局。将组件从左到右、从上到下放置。
CardLayout:卡片布局。将加入的组件视为卡片栈,把每个组件放在一张卡片上,每次只能看见一张卡片。
GridLayout:网格布局。将容器分成相同尺寸的网格,将组件从左到右、从上到下放置在网格中。
GridBagLayout:网格包布局。一个组件可以占用多个网格,在加入组件时必须指明一个对应的参数。
组件(Component):在使用GUI组件时,所有的组件都是层层嵌套的,通过组件的嵌套最终整合到面板上,再进行事件处理。
按钮(Button):实现某个单击动作
构造方法:
Button button = new Button("button name");
产生ActionEvent事件条件:
要实现ActionListener接口监听
调用addActionListener方法接收单击事件
标签(Label):在容器中放置静态文本的组件
构造方法:
Label label = new Label("label content");
复选框(Checkbox):一个处于on或者off状态的组件
方法:
add(new Checkbox("first",null,true));
add(new Checkbox("second"));
单击Checkbox,产生ItemEvent事件,使用ItemListener监听
getStateChange()获取当前状态,getItem()获得Checkbox的字符串对象。
下拉式菜单(Choice):表示一个弹出式选择菜单组件
使用ItemListener监听
Choice colorChoice = new Choice();
colorChoice.add("item1"); //添加一个菜单项item1
Canvas:画布
画布是处于屏幕上的一个空白的矩形区域,通过调用方法,在该区域内可以绘图,可以触发event。
文本框(Text):可编辑的单行文本组件
Text1 = new TextField(); //空单行文本框
Text2 = new TextField(10);//输入区长度为10的文本域
Text3 = new TextField("hello");//带初始文本内容的单行文本框
Text4 = new TextField("hello",10);//带初始文本内容的、指定输入区长度为10的文本域
当在文本域输入结束,回车将产生ActionEvent事件,通过ActionListener的actionPerformed()方法处理事件。
扩展:Area = new TextArea(); //一个空文本区 ...
滚动条(Scrollbar):调整线性值
Scrollbar bar= new Scrollbar(Scrollbar.VERTICAL,0,1,0,255);
add(bar);//将bar添加于容器
改变Scrollbar的值,产生AdjustmentEvent事件。监听AdjustmentEvent事件,要实现AdjustmentListener接口,调用addAdjustmentListener()和removeAdjustmentListener()方法添加或删除监听器。
菜单栏(Menubar):菜单必须先添加到菜单栏中
MenuBar mb = new MenuBar();//创建,并初始化菜单栏
f.setMenuBar(mb);//将菜单栏对象设置为窗口的菜单栏
Menu menu1 = new Menu("File");//创建,初始化菜单menu1
MenuItem menuItem = new MenuItem("Save");//创建,初始化菜单项
绘图(Graphic)
Graphic类用于绘图和显示格式化文字的输出工具。
具体见api。