图形界面
ATM
在整个AWT包中提供的所有工具类主要分为以下3种。
(1)组件:Component。
(2)容器:Container。
(3)布局管理器:LayoutManager。
组件
在整个AWT包中,所有的组件类(例如按钮、文本框等)都是从Component和MenuComponemt
扩展而来的,这些类会继承这两个类的公共操作。
在Swing 中的所有组件类也都是Component的子类,与 Component不同的是,所有的组件前
都加上了一个“JXx”的形式,如JButton、JLabel等。
容器
所有的AWT组件都应该放到容器中,并可以设置其位置、大小等,所有的容器都是 Component
的子类。
布局管理器
使用布局管理器可以使容器中的组件按照指定的位置进行摆放,另外的一个优点是,即使容器
改变了大小,布局管理器也可以准确地把组件放到指定的位置,这样就可以有效地保证版面不
会混乱。在AWT中所有的布局管理器都是 LayoutManager的子类。
Swing简介
AWT 大量地引入了 Windows函数,所以经常被称为重量级组件。在 Java2中提供了轻量级的图
形界面组件——Swing,Swing 使用Java语言实现,是以AWT平台为基础构建起来的新组件,直接
使用Swing 可以更加轻松地构建用户界面。在 Java 中所有的 Swing 都保存在javax.swing
包中,从包的名称(javax)中就可以清楚地发现此包是一个扩展包,所有的组件是从JComponent
扩展出来的。此类实际上是java.awt.Component的子类。
基本容器JFrame
Component的子类
创建一个新窗体
package org.lxh.demo18.jframedemo;
import java.awt.Color;
import javax.swing.JFrame;
public class JFrameDemo01{
public static void main(String args」) (
JFramef=new JFrame("第一个Swing 窗体”);//实例化窗体对象
f.setSize(230,80); //设置窗体大小
f.setBackground(Color.WHITE); //设置窗体的背景颜色
f.setLocation(300,200); //设置窗体的显示位置
f.setVisible(true); //让组件显示
}
}
使用Dimension和Point 类设置组件大小和显示位置
package org.lxh.demo18.jframedemo;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.JFrame;
public class JFrameDemo02(
public static void main(String args,) (
JFramef=new JFrame(“第一个Swing 窗体”); //实例化窗体对象
Dimension d = new Dimension(); //实例化 Dimension 对象
d.setSize(230,80); //设置大小
f.setSize(d); //设置组件大小
f.setBackground(Color.WHITE) ; //设置窗体的背景颜色
Point p = new Point(300,200); //设置显示的坐标点
f.setLocation(p); //设置窗体的显示位置
f.setVisible(true) ; //让组件显示
}
}
标签组件JLabel
JLabel 组件表示的是一个标签,本身是用于显示信息的,一般情况下是不能直接更改其显
示内容的。创建完的 Label 对象可以通过 Container类中的add()方法加入到容器中,
JLabel类的常用方法和常量。
使用一个标签
package org.lxh.demo18.jlabeldemo;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
public class JLabelDemo01 (
public static void main(String args,) (
JFrame frame = new JFrame("Welcome To MLDN") ; //实例化窗体对象
JLabel lab = new JLabel("MLDN", JLabel.CENTER); //实例化对象,使用居中对齐
frame.add(lab) ; //向容器中加入组件
Dimension dim = new Dimension(); //实例化 Dimension 对象
dim.setSize(200,70) ; //设置大小
frame.setSize(dim) ; //设置组件大小
frame.setBackground(Color.WHITE) ; //设置窗体的背景颜色
Point point = new Point(300,200) ; //设置显示的坐标点
frame.setLocation(point) ; //设置窗体的显示位置
frame.setVisible(true) ; //让组件显示
}
}
按键组件
建立一个普通的按钮
package org.lxh.demo18.jbuttondemo;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
public class JButtonDemo01{
public static void main(String args,) (
JFrame frame = new JFrame("Welcome To MLDN") ; //实例化窗体对象
JButton but=new JButton("按我”); //定义按钮对象
Font fnt = new Font("Serief"', Font.BOLD, 28); //设置按钮的显示字体
but.setFont(fnt) ; //设置按钮的显示字体
frame.add(but); //向容器中加入组件
frame.setSize(200,70); //设置窗体大小
frame.setLocation(300,200); //设置窗体的显示位置
frame.setVisible(true); //让组件显示
}
}
布局管理器
以下5种常见的布局管理器:FlowLayout、BorderLayout、GridLayout、CardLayout、绝对定位。
FlowLayout属于流式布局管理器
设置FlowLayout
package org.lxh.demo18.layoutdemo;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class FlowLayoutDemo01 {
public static void main(String, args) {
JFrame frame = new JFrame("Welcome To MLDN") ; //实例化窗体对象
//设置窗体中的布局管理器为FlowLayout,所有的组件居中对齐,水平和垂直间距为3
frame.setLayout(new FlowLayout(FlowLayout.CENTER, 3, 3));
JButton but = null;
for (inti =0;i< 9; i++) {
but=new JButton("按钮 -"+i);
frame.add(but) ; //加入按钮
}
frame.setSize(280,123); //设置窗体大小
frame.setVisible(true) ; //设置窗体可见
}
}
BorderLayout
BorderLayout 将一个窗体的版面划分成东、西、南、北、中5个区域,可以直接将需要的组
件放到这5个区域中。BorderLayout的常用方法及常量。
设置BorderLayout
package org.lxh.demo18.layoutdemo;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class BorderLayoutDemo01 {
public static void main(String] args) { //实例化窗体对象
JFrame frame = new JFrame("Welcome To MLDN") ;
//设置窗体中的布局管理器为 BorderLayout,所有的组件水平和垂直间距为3
frame.setLayout(new BorderLayout( 3, 3));
frame.add(new JButton("东(EAST) "), BorderLayout.EAST);
frame.add(new JButton("西(WEST) "),BorderLayout.WEST);
frame.add(new JButton("南(SOUTH) "), BorderLayout.SOUTH);
frame.add(new JButton("北(NORTH) "),BorderLayout.NORTH);
frame.add(new JButton("中(CENTER)"),BorderLayout.CENTER);
frame.pack(); //根据组件自动调整窗体大小
frame.setVisible(true) ; //设置窗体可见
}
}
GridLayout
GridLayout 布局管理器是以表格的形式进行管理的,在使用此布局管理器的时候必须设置
显示的行数和列数,常用的方法。
绝对定位
如果不想在窗体中指定布局管理器,也可以通过设置绝对坐标的方式完成布局。在 Component
中提供了 setBounds()方法,可以定位一个组件的坐标,使用X、Y的坐标表示方式,此方法定
义如下:
public void setBounds(int x,int y,int width,int height)