JavaSE学习54:GUI编程之几个常用的类

一GUI概述

AWT(Abstract Window Toolkit)包括了很多类和接口,用于Java Application的GUI(Graphics User Interface)编

程。使用AWT所涉及的类一般在java.awt包及其子包中,GUI的各种元素(如:窗口,按钮,文本框等)由Java类来实

现。

Component类和Container类是AWT中的两个核心类。Java的图形用户界面的最基本组成部分是Component类,

Component类及其子类的对象用来描述以图形化的方式显示在屏幕上并能与用户进行交互的GUI元素,例如,一个按

钮,一个标签等。

一般的Component类对象不能独立地显示出来,必须将放在某一的Container类对象中才可以显示出来Container

类是Component抽象的子类,Container子类对象可以容纳别的Component对象。

Component抽象类与Container类:

Container类是Component类的子类,因此Container类的实例对象也可以被当作Component对象添加到其他

Container对象中。有两种常用的Container类的对象:

1)Window类:其对象表示自由停泊的顶级窗口。

2)Panel类:其对象可作为容纳添其它Component对象,但不能独立存在,必须被添加到其它Container对象中

(如Window或Applet)

(1)Component抽象类

Component类对象是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。典型图形用户界面

中的按钮、复选框和滚动条都是组件示例。 Component类是与菜单不相关的AWT组件的抽象超类。还可以直接扩展

类Component来创建一个轻量级组件。轻量级组件是与本机不透明窗口不相关的组件。

Component类的构造方法只有一个:

Component类的常用方法有:

(2)Container类

Container类继承自Component抽象类。

一般的AWT容器对象是一个可包含其他AWT组件的组件。 添加到容器中的组件放在一个列表中。列表的顺序将

定义组件在容器内的正向堆栈顺序。如果将组件添加到容器中时未指定索引,则该索引将被添加到列表尾部(此后它位

于堆栈顺序的底部)。

Container类的构造方法:

Container类常用的方法:

(3)Window类

Window对象是一个没有边界和菜单栏的顶层窗口。窗口的默认布局是BorderLayout。 构造窗口时,它必须拥有

窗体、对话框或其他作为其所有者定义的窗口。

Window类的构造方法;

Window类独有得方法和继承的方法查看API得知。

对于Panel类我们下面详细介绍和使用。

二Frame类的用法

Frame类是Window类的子类,由Frame类或其子类创建的对象为一个窗体。因此它是带有标题和边框的顶层窗

口类。

窗体的大小包括为边框指定的所有区域。边框区域的尺寸可以使用getInsets()方法获得,但是,由于这些尺寸

与平台相关,因此在通过调用pack()方法或show()方法将窗体设置为可显示之前,将无法获得有效的insets值。由于窗

体的总大小包括了边框区,因此边框实际上遮掩了窗体的部分区域,并将可用于在矩形中呈现和/或显示子部件的区域

限制在一个矩形内,该矩形左上角的位置为(insets.left, insets.top),宽度为width-(insets.left + insets.right),长度为

heigh -(insets.top + insets.bottom)。

窗体的默认布局为 BorderLayout。

Frame类的构造方法:

常用的构造方法有下面两个:

1)Frame()

2)Frame(String s)//创建标题栏为字符串s的窗口

Frame类的方法:

常用的方法还有继承而来的方法。这里不再列出。

实例代码:

TestFrame.java源代码:

import java.awt.*;

/* 范例名称:Frame应用举例
 * 源文件名称:TestFrame.java
 * 要  点:Frame组件的创建及显示设置
 */
public class TestFrame{
	public static void main( String args[]){
		Frame f = new Frame("我的第一个Java窗体");
		f.setLocation(300, 300);
		f.setSize(677,442);
		f.setBackground(Color.gray);
		f.setResizable(false);
		f.setVisible(true);
	}
}

运行结果:

TestMultiFrame.java源代码:

import java.awt.*;

public class TestMultiFrame {
    public static void main(String args[]){
        MyFrame f1 = new MyFrame(100,100,200,200,Color.BLUE);
        MyFrame f2 = new MyFrame(300,100,200,200,Color.YELLOW);
        MyFrame f3 = new MyFrame(100,300,200,200,Color.GREEN);
        MyFrame f4 = new MyFrame(300,300,200,200,Color.MAGENTA);
    }
}

class MyFrame extends Frame{
    static int id = 0;

    //构造方法
    MyFrame(int x,int y,int w,int h,Color color){
        super("MyFrame " + (++id));
        setBackground(color);
        TestMultiFrame(null);
        setBounds(x,y,w,h);
        setVisible(true);
    }
}

运行结果:

三Panel类的用法

Panel类是最简单的容器类。应用程序可以将其他组件放在面板提供的空间内,这些组件包括其他面板。面板的

默认布局管理器是FlowLayout布局管理器。Panel对象可以看成可以容纳Component的空间,Panel对象可以拥有自己

的布局管理器。

Panel类的构造方法和独有的方法:

当然继承而来的方法我们不在列出,具体的可以查看API文档。

实例:

TestPanel.java源代码:

import java.awt.*;

public class TestPanel{
    public static void main(String args[]) {
	Frame f = new Frame("Java窗体");
        Panel p = new Panel(null);

        f.setLayout(null);
        f.setBounds(300,300,500,500);
        f.setBackground(new Color(0,0,102));

        p.setBounds(50,50,400,400);
        p.setBackground(new Color(204,204,255));

        f.add(p);
        f.setVisible(true);
    }
}

运行结果:

TestMultiPanel.java源代码:

import java.awt.*;

public class TestMultiPanel {
    public static void main(String args[]){
        new MyFrame2("Java窗体",300,300,600,400);
    }
}

class MyFrame2 extends Frame{
    private Panel p1,p2,p3,p4;

    //构造方法
    MyFrame2(String s,int x,int y,int w,int h){
        super(s);
        setLayout(null);
        p1 = new Panel(null);
	p2 = new Panel(null);
        p3 = new Panel(null);
	p4 = new Panel(null);

        p1.setBounds(0,0,w/2,h/2);
        p2.setBounds(0,h/2,w/2,h/2);
        p3.setBounds(w/2,0,w/2,h/2);
        p4.setBounds(w/2,h/2,w/2,h/2);

        p1.setBackground(Color.BLUE);
        p2.setBackground(Color.GREEN);
        p3.setBackground(Color.YELLOW);
        p4.setBackground(Color.MAGENTA);

        add(p1);
	add(p2);
	add(p3);
	add(p4);
        setBounds(x,y,w,h);
        setVisible(true);
    }
}

运行结果:

设计一个含有Panel的自定义的Frame类含有,形式如下图:

实例代码:

import java.awt.*;

public class CenterPanel {
  public static void main(String args[]){
    new MyFrame3(300,300,400,300,Color.BLUE);
  }
}

class MyFrame3 extends Frame{
  private Panel p;

  //构造方法
  MyFrame3(int x,int y,int w,int h,Color c){
    super("FrameWithPanel");
    setLayout(null);
    setBounds(x,y,w,h);
    setBackground(c);

    p = new Panel(null);
    p.setBounds(w/4,h/4,w/2,h/2);
    p.setBackground(Color.YELLOW);

    add(p);
    setVisible(true);
  }
}

结果如上图所示。

时间: 2024-10-10 17:02:22

JavaSE学习54:GUI编程之几个常用的类的相关文章

java基础学习总结——GUI编程(二)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——GUI编程(二) 一.事件监听 测试代码一: 1 package cn.javastudy.summary; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 6 public class TestActionEvent { 7 public static void main(String args[]) { 8 Frame f = new Frame("

java基础学习总结——GUI编程(一)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——GUI编程(一) 一.AWT介绍 所有的可以显示出来的图形元素都称为Component,Component代表了所有的可见的图形元素,Component里面有一种比较特殊的图形元素叫Container,Container(容器)在图形界面里面是一种可以容纳其它Component元素的一种容器,Container本身也是一种Component的,Container里面也可以容纳别的Container. Cont

java基础学习总结——GUI编程(一) 还未仔细阅读

一.AWT介绍 所有的可以显示出来的图形元素都称为Component,Component代表了所有的可见的图形元素,Component里面有一种比较特殊的图形元素叫Container,Container(容器)在图形界面里面是一种可以容纳其它Component元素的一种容器,Container本身也是一种Component的,Container里面也可以容纳别的Container. Container里面又分为Window和Pannel,Window是可以独立显示出来的,平时我们看到的各种各样的

java基础学习总结——GUI编程(二) 未学习

一.事件监听 测试代码一: 1 package cn.javastudy.summary; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 6 public class TestActionEvent { 7 public static void main(String args[]) { 8 Frame f = new Frame("TestActionEvent"); 9 Button btn = new Button(&qu

java学习笔记 GUI编程

GUI  graphics user interface 图形用户接口   AWT    abstract window toolkit 抽象窗口开发包 组件管理器 布局管理器 事件处理 java图形 window事件 AWT 抽象了图形元素,例如工具栏,菜单,下拉条,输入框等 component:所有可以显示的图形元素 window:   可以自由停泊的顶级窗口,一般通过其子类将其new出   panel:可容纳其他元素,但不能独立显示   Frame frame 的各种属性,setBound

Java学习---9.GUI编程

1.AWT:component:可以显示的按钮,图标等 window可以独立显示,panel可以容纳其他元素,但不能作为应用程序的独立窗口显示出来. applet不常用 AWT和Swing之间的基本区别:AWT 是基于本地方法的C/C++程序,其运行速度比较快:Swing是基于AWT 的Java程序,其运行速度比较慢.对于一个嵌入式应用来说,目标平台的硬件资源往往非常有限,而应用程序的运行速度又是项目中至关重要的因素.在这种矛盾的情况下,简单而高效的AWT 当然成了嵌入式Java的第一选择.而在

JavaSE学习57:GUI编程之事件模型(二)

一实现两个数求和并且输出结果 利用所学的GUI编程实现上述的要求. TFMath.java源代码: <span style="font-size:18px;">import java.awt.*; import java.awt.event.*; public class TFMath { public static void main(String[] args) { new TFFrame().launchFrame(); } } class TFFrame exten

初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)

初次踏上GUI编程之路 —— 我的Qt学习方法及对Qt认识的不断转变 -> 开始接触GUI与开始接触Qt: 话说,我第一次看见“Qt”这一个名词,好像是在CSDN网站的主页上吧,因为CSDN好像在给Qt做宣传,在主页上占了一栏的广告,只是,这时,我还没怎么刻意去留意这个陌生的字眼.在我大二上学期中下期时,即大概是2011年的12月,由于自己刚刚完成了汇编语言的入门学习,正要制订下一个学习目标,所以,又开始找起了资料,同时,也再次开始为自己的就业问题担心,于是,开始搜集一些招聘单位的信息,这时候,

JAVA GUI编程学习笔记目录

1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之GUI编程窗体事件 6.JAVA之GUI编程Action事件 7.JAVA之GUI编程鼠标事件 8.JAVA之GUI编程键盘码查询器 9.JAVA之GUI编程列出指定目录内容 10.JAVA之GUI编程弹出对话框Dialog 11.JAVA之GUI编程菜单 12.JAVA之GUI编程打开与保存文件 13.JAVA之GUI编程将程序打包jar JA