********************第16章 GUI编程 **************************
一.什么是GUI
GUI= Graphical User Interface 图形用户接口 图形用户界面
GUI是用java来编写带界面的应用程序
两套技术
1. AWT(Abstract Window Toolkit)
抽象窗口工具集
图形界面不是java本身实现的,其实是依赖于操作系统的底层函数
为了让同一个java程序运行在不同的操作系统上效果一致,所以
awt技术是抽取所有操作系统中共有的函数,这样既然是函数的交集
肯定功能比较单一
2. Swing
纯java实现的 由于本身不依赖于操作系统的底层函数 所以组件比较丰富
也可以跨平台
二.why
1. Awt 和Swing 虽然过时了,但是图形用户界面的编程思想并没有过时,我们学习
这一章主要学习GUI编程的思想,为以后学习Android等打下一个基础
2. 为了做初级项目
*******************普通组件的继承关系图和常用方法******************
普通组件的常用方法
1. 设置位置
setLocation(int x,int y)
2. 设置大小
setSize(int width,int height)
3. 设置位置和大小
setBounds(int x,int y,int width,int height)
4. 设置组件的可见性
setVisible(boolean flag)
容器的常用方法
容器: 它是一个特殊的组件,可以放其他的组件
1. 往容器中添加组件
Component add(Component component)
...
**********************容器组件的继承关系图*************************
一.window(窗口)
顶级容器 可以独立使用
二.Panel(面板)
不是顶级容器 只能放在其他容器中使用(Window或Panel)
早期把java程序分为两大类:
1. application
2. applet 可以嵌入到网页中的java小程序
applet后来被flash技术打败了
**********************************Frame****************************************
顶级容器,可以独立使用
Frame代表常见的窗口,它是Window类的子类,具有如下几个特征:
1.Frame对象有标题,允许通过拖拉来改变窗口的位置、大小
2.初始化时为不可见,可用setVisible(true)使其显示出来
3.默认使用BorderLayout作为布局管理器(稍后再说)
package com.chapter16;
import java.awt.Frame;
public class TestFrame {
public static void main(String[] args) {
Frame frame = new Frame("我是标题");
frame.setLocation(50, 150);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
**********************************Panel****************************************
不是顶级容器,不可以独立使用,必须放到其他容器中(例如Window或Panel)
1.可作为容器来盛装其他组件,为放置组件提供空间
2.不能单独存在,必须放到其他容器中
3.默认使用FlowLayout作为其布局管理器
演示代码:
package com.chapter16;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextField;
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame("我是标题");
frame.setLocation(50, 150);
frame.setSize(250, 120);
//测试Panel
Panel panel = new Panel();
panel.add(new TextField(20));
panel.add(new Button("发送"));
//再把panel放到frame中
frame.add(panel);
frame.setVisible(true);
}
}
**********************************ScrollPane**************************************
带有滚动条的面板
把Panel 改成 ScrollPane 以后 单行文本框没了,原因是被按钮盖住了..
原因ScrollPane默认是BorderLayout 边框布局 如果添加的时候 没有指定添加元素的位置 默认添加到中间
两个组件都添加到中间 按钮就把单行文本框覆盖了
演示代码:
package com.chapter16;
import java.awt.Frame;
import java.awt.ScrollPane;
import java.awt.TextArea;
public class TestScrollPane {
public static void main(String[] args) {
Frame frame = new Frame("我是标题");
frame.setLocation(50, 150);
frame.setSize(250, 120);
//测试Panel
//ScrollPane.SCROLLBARS_AS_NEEDED 默认值 需要的时候再加滚动条
ScrollPane panel = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
panel.add(new TextArea(5,20));
//panel.add(new Button("发送"));
//再把panel放到frame中
frame.add(panel);
frame.setVisible(true);
}
}
*******************************布局管理器**************************
一.为什么用布局管理器
使用了布局管理器以后,程序员就不需要主动调整控件的大小了, 由布局管理器帮你实现(相当于一个适配器)
要不然程序员一个一个调整组件的大小太麻烦了
二.如何设置容器的布局管理器
布局管理器类的对象
容器对象.setLayout(new XXXLayout());
三.常见的布局管理器(6种)
1. FlowLayout 流式布局
就像在txt或doc文档中打字一样,文字出现的顺序就是往流式布局 中添加的顺序
Panel 默认是流式布局
2. BorderLayout 边框布局
Frame 默认是边框布局的
类似4个人围桌 打麻将
如果想添加五个以上的组件,可以先把组件添加到Panel中,然后把Panel添加到 边框布局的容器中
原文地址:https://www.cnblogs.com/MrTanJunCai/p/9906839.html