Java复习9 图形化界面

9 图形化界面

9.1.AWT和Swing包

  1. java.awt包:抽象窗口工具集包含的类,如按钮、标签、菜单、对话框。AWT集中包含本地代码,组件外观和界面显示风格与本地平台有关;AWT中定义的组件被称为重量级组件。
    java.awt包含Dimention、Font、Color、Component等类及其子类。

  2. javax.swing包:大部分Swing组件不包含本地代码,组件外观与本地平台无关,可以自行设定。不包含本地代码的Swing组件成为轻量级组件。但Swing组件中的JFrame和JDialog属于重量级组件。
    javax.swing包含JFrame、JDialog、JComponent等类及其子类。

9.1.1 辅助类

设置GUI属性的类。
Dimention:将组建高宽封装在对象
Font:设置字体
FontMetrics:获取字体属性
Color:设置颜色
Graphics:提供图形环境,用于绘制图形
LayoutManager:设置组件摆放方式

9.1.2 组件类

JComponent是所有轻量级Swing组件的父类,常用的由按钮JButton、标签JLabel、文本框JTestField、文本区JTestArea、列表框JList等。可以通过创建这些类的实例才产生这些组件。同时这些组件不能独立存在,必须放在容器内。

JButton jb = new JButton(“OK”);
JLabel j1 = new JLabel(“欢迎”);
9.1.3 容器类

可以容纳其他组件的类,Swing中的JFrame、JDialog、JPanel都是容器类。

  1. JFrame:GUI顶级窗口,不能放在其它窗口。Windows类的子类,具有标题栏,窗口大小可以改变。
  2. JDialog:对话框窗口。Windows类的子类,具有标题栏,窗口大小不可以改变。
  3. JPanel(面板):不可见的容器,不能单独显示,面板可以嵌套。还可以作为画布画图。 以上均为Container类的间接子类,都能使用Container类的add()方法向容器中添加组件。
9.1.3.1 JFrame
  • 构造方法:
    public JFrame()
    public JFrame(String title)
  • 常用方法:
  1. public Container getContentPane():内容嵌板,向JFrame添加组件实际是在内容嵌板上添加的。
 JFrame jf = new  JFrame);
 JButton jb = new JButton(“OK”);
 jf.getContentPane ( ) .add ( jb )//**通常写为jf.add(jb);**
  1. public void setContentPane( Container contentPane):除了用getContentPane()得到内容嵌板,也可以将现有的容器,如JPanel设为内容嵌板。

  2. public void setDefaultCloseOperation(int operation):设置JFrame窗口右上角的关闭按钮×的默认动作。这里的参数如下(定义在WindowConstants中)
    DO_NOTHING_ON_CLOSE,单击关闭按钮,系统什么都不做
    HIDE_ON_CLOSE,单击关闭按钮,隐藏窗口,但不释放、退出程序
    DISPOSE_ON_CLOSE,…,隐藏并释放窗口
    EXIT_ON_CLOSE,…,关闭窗口,并退出应用程序
    不使用本方法设置关闭按钮操作,默认HIDE_ON_CLOSE

  3. public void setLayout(LayoutManager manager):设置版面布局方式

  4. public void setJMenuBar(JMenuBar menebar):在JFrame窗口添加菜单栏

  • JFrame常用继承:
  1. public Component add(Compponent comp):在JFrame窗口添加组件
  2. public void setBackground(Color c):设置JFrame窗口背景色,由于内含内容嵌板,故直接设置内容嵌板的背景色即可。
  3. public void setLocation(int x,int y):设置JFrame窗口显示的位置,原点(0,0)在该组件所在的上一层组件的左上角,x表示向右增加,y表示向下增加
  4. public void setSize(int width,int height):设置JFrame窗口大小
  5. public void setVIsible(boolean b):设置JFrame窗口是否显示,true显示,false不显示。
    示例1:
import javax.swing.*;
import java.awt.*;

public class MyFrame{
    /*private JFrame f ;
    public MyFrame() {
    f=new JFrame("My First GUI");
    }*/
    private JFrame f=new JFrame("My First GUI");
    JButton jb = new JButton("OK");
    public void launchFrame(){

        f.setSize(170,170);
        f.setLocation(50,50);
        Container c = f.getContentPane();
        c.setBackground(Color.WHITE);
        c.add(jb);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String args[]){
        MyFrame mf = new MyFrame();
        mf.launchFrame();
    }
}

示例2:示例1是在自定义类中直接创建JFrame对象产生,还可以定义一个类,让该类继承JFrame来创建窗口。

import javax.swing.*;
import java.awt.*;

public class MyFrame extends JFrame{

    public static void main(String args[]){
        MyFrame f=new MyFrame();
        f.setTitle("My First GUI");
        JButton jb = new JButton("OK");

        f.setSize(170,170);
        f.setLocation(50,50);
        Container c = f.getContentPane();
        c.setBackground(Color.WHITE);
        c.add(jb);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
9.1.3.2 JPanel(面板)

9.2.版面布局管理器

下面介绍java.awt包中的:

  • FlowLayout:
  1. 按照添加组件的顺序从左往右排列在容器中,排满一行,再开始新的一行。组件大小为默认最佳大小(恰好能容纳文本),改变容器大小,组件位置改变,但大小不变。
  2. 是Panel、JPanel、Applet等容器默认的布局管理器。
  3. 构造方法:
    public FlowLayout()。对齐方式为剧中,水平和垂直间距都是5个单位
    public FlowLayout(int align)。指定对齐方式(align)、水平和垂直间距都是5个像素。居左:FlowLayout.LEFT;居右:FlowLayout.RIGHT;居中:FlowLayout.CENTER
    public FlowLayout(int align,int hgap,int vgap)。指定对齐方式,水平间距,垂直间距。
    创建好以后,可以根据setAlingment(int align)、setHgap(int hgap)、setVgap(int vgap)方法重新设置对齐方式、水平间距和垂直间距。
    4.略过
  • BorderLayout:
  1. 将容器分为东西南北中五个区域
  • GridLayout:
  1. 将容器平均分割成若干个(行数乘列数)网格,按从左到右的顺序添加组件,添加满一行,再开始新的一行。添加到网格的组件手网格大小的约束。
  • GarLayout:
  • 1.使容器可以收纳一系列卡片的布局管理器。卡片被一张张添加到容器,但在某一时刻只能显示一张卡片上的内容。程序如果不特别指定,首次运行时显示第一个被添加的卡片。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值