第十一周课程总结
第十一周课程总结
这一周只要是学习图形界面。在Java中的操作界面中,图形用户界面编程主要有以下几个特征:
-
1)图形界面及其框架(图形界面对象之间的包含关系)。
-
2)图形界面对象的布局(图形界面之间的位置关系)。
-
3)图形界面对象上的事件响应(图形界面对象上的动作)。
在Java的图形界面开发中可以使用的技术有AWT和Swing两种。但是在AWT中大量的使用了Windows的系统函数,不是使用Java开发的,所以是重量级组件;而Swing是由Java来实现用户界面类,可以在任意的系统平台上工作,属于轻量级组件,但是在Swing中任然大量使用了AWT的概念。
一、AWT
AWT抽象窗口工具包,是Java提供的用来建立和设置Java图形用户界面的基本工具,在整个AWT包中提供的所有工具类主要分为:组件(Component)、容器(Container)、布局管理器(Layout Manager)。
二、Swing
在Java中提供了轻量级的图形界面组件——Swing,Swing使用Java语言实现,是以AWT平台为基础构建起来的新组件,直接使用Swing可以更加轻松地构建用户界面。
三、基本容器JFrame
如果现在使用Swing创建一个窗口,则直接使用JFrame类即可,此类是Component的子类,常用的操作方法:
package javabook;
import java.awt.*;
import javax.swing.*;
public class JavaSwing {
public static void main(String[] args) {
JFrame f=new JFrame("图形界面"); //实例化一个窗口
Dimension d=new Dimension(600,480); //实例化Dimension对象来控制窗口大小
f.setSize(d);
f.setBackground(Color.WHITE); //设置窗口的背景颜色
Point p=new Point(300,200); //设置显示坐标
f.setLocation(p); //显示位置
f.setVisible(true); //让组件显示
}
}
四、标签组件JLabel
JLabel组件表示的是一个标签,本身是用于显示信息的,一般情况下是不能直接更改其显示内容的。创建完Label对象可以通过Container类中的add()方法加入到容器中。
package javabook;
import java.awt.*;
import javax.swing.*;
import javax.swing.JFrame;
public class JavaSwing2 {
public static void main(String[] args) {
JFrame f=new JFrame("图形界面"); //实例化一个窗口
JLabel lab=new JLabel("java",JLabel.CENTER); //实例化对象,使用居中对齐
f.add(lab); //向容器中加入组件
Dimension d=new Dimension(600,480); //实例化Dimension对象来控制窗口大小
f.setSize(d);
f.setBackground(Color.WHITE); //设置窗口的背景颜色
Point p=new Point(300,200); //设置显示坐标
f.setLocation(p); //显示位置
f.setVisible(true);
}
}
五、更改JLabel的文字样式
以上的内容只是使用了默认的字体和颜色显示,如果现在要想更改使用的字体,则可以直接使用Component类中定义的方法;
Public void setFont(Font f)
package javabook;
import java.awt.*;
import javax.swing.*;
public class JavaSwing3 {
public static void main(String[] args) {
JFrame f=new JFrame("图形界面"); //实例化一个窗口
JLabel lab=new JLabel("java",JLabel.CENTER); //实例化对象,使用居中对齐
f.add(lab); //向容器中加入组件
Font fnt=new Font("Serief",Font.ITALIC+Font.BOLD,28); //实例化对象
lab.setFont(fnt); //显示标签
lab.setForeground(Color.RED); //设置标签颜色
Dimension d=new Dimension(600,480); //实例化Dimension对象来控制窗口大小
f.setSize(d);
f.setBackground(Color.WHITE); //设置窗口的背景颜色
Point p=new Point(300,200); //设置显示坐标
f.setLocation(p); //显示位置
f.setVisible(true);
}
}
六、布局管理器
了解了举办的窗口以及组件后,可以发现,如果不对窗口见习版面设计,则一个组件会直接充满整个窗口,所以在Java中专门提供了布局管理器来管理组件,通常布局管理器可以用不同的方式排列组件。每当需要重新调整屏幕大小或重新绘制屏幕上任一项时,都要用到布局管理器。在Swing中使用的所有布局管理器都实现Layout Manager接口,在Swing中主要使用5种常见的布局管理器:FlowLayout、BorderLayout、GridLayout、CardLayout、绝对定位。
- 1、FlowLayout
属于流式布局管理器,使用此种布局管理器方式会使所有的组件像流水一样依次进行排序。
package javabook;
import java.awt.*;
import javax.swing.*;
public class JavaFlowLayout {
public static void main(String[] args) {
JFrame f=new JFrame("图形界面"); //实例化一个窗口
//设置窗体中布局管理器为FlowLayout,所有的组件居中对齐,水平和垂直间距为3
f.setLayout(new FlowLayout(FlowLayout.CENTER,3,3));
for(int i=0;i<9;i++) {
JButton but=new JButton("按钮-"+i);
f.add(but);
}
Point p=new Point(600,200); //设置显示坐标
f.setLocation(p); //显示位置
f.setVisible(true);
}
}
-
2、BorderLayout
将一个窗口的版面划分为东西南北中五个区域,可以直接将需要的组件放到这五个区域中。 -
3、GridLayout
布局管理器是以表格的形式进行管理的,在使用此布局管理器说的时候必须设置显示的行和列数。
package javabook;
import java.awt.*;
import javax.swing.*;
public class JavaGridLayout {
public static void main(String[] args) {
JFrame f=new JFrame("图形界面"); //实例化一个窗口
//设置窗体中布局管理器为GdriLayout,按3X5排列,水平和垂直间距为3
f.setLayout(new GridLayout(3,5,3,3));
for(int i=0;i<13;i++) {
JButton but=new JButton("按钮-"+i);
f.add(but);
}
f.pack();
Point p=new Point(600,200); //设置显示坐标
f.setLocation(p);
f.setVisible(true);
}
}
-
4、CardLayout
就是将一组组彼此重叠的进行布局,就像一张张卡片一样,这样每一次只会展示一个界面。 -
5、绝对定位
如果不想在窗口中指定布局管理器,也可以通过设置绝对坐标的方式完成布局,在Component中提供了setBounds()方法,可以定位一个组件的坐标,使用x,y的坐标表示方法。