java的GUI学习(一):认真详细初识Frame类

1.什么是Frame? Frame是javaGUI里面一个最基本的组件,属于awt这个包里面的 一个类,它是我们平常俗称的 窗口 , 如图所示:

java的GUI学习(一):认真详细初识Frame类_第1张图片

2.我们怎么通过java来创建这个窗口

1.通过Frame类来实例化一个对象

Frame myframe = new Frame();
2.通过两种方式为窗口添加一个标题
//第一种方法是通过调用Frame的setTitle()方法设置
myframe.setTitle("MyFirstFrame");

//第二种方法是通过new对象的时候初始化
Frame myframe = new Frame("MyFirstFrame");
3.我们为窗口设置一些基本属性
//设置窗口的宽和高
myframe.setSize(200,200);
//设置出口段初始位置x,y
myframe.setLocation(100,100);
4.我们运行一下,发现窗口并没有如愿的显示出来,这是为什么,因为默认 窗口是隐藏的(什么意思?)那确实通过new创建了一个对象,而且该对象确实存在于内存当中,但它初始是隐藏的,我们可以设置它为可见状态
//设置窗口为可见的
myframe.setVisible(true);
5.我们再运行一下,发现窗口可以出来了

java的GUI学习(一):认真详细初识Frame类_第2张图片

6.新的问题出来了,这个窗口只能隐藏和放大,不能关闭,这样子我们该怎么解决呢?
这就涉及到了监听了,我们说,学GUI,最重要的一个操作莫过于监听一些事件的状态,我们这里就以Frame这个最简单的例子来谈谈窗口关闭的监听是怎么实现的
别急,我们写找到Frame里面有关监听的方法

myframe.addWindowListener();
别急,仅仅这样子写肯定是报错的,我们看看这个方法需要的参数

java的GUI学习(一):认真详细初识Frame类_第3张图片

它需要一个事件窗口监听器,那我们就创建一个
这里就学到了一个新的类,叫 WindowAdapter
这个类是一个窗口监听事件的适配器,可以用内部接口来实现一些窗口的监听,我们打开这个类的源代码看看(IDEA的小伙伴可以按住键盘左下角的ctrl不松手,将鼠标移到代码的WindowAdapter那里,双击就可以看到源码了)

java的GUI学习(一):认真详细初识Frame类_第4张图片
java的GUI学习(一):认真详细初识Frame类_第5张图片
java的GUI学习(一):认真详细初识Frame类_第6张图片

发现里面有好多接口,我们就详细看看这些接口怎么用(其实最常用的就是第二个和第六个)
我们单独抽出来
1.首先新建一个适配器对象

myframe.addWindowListener(new WindowAdapter() {

});
2.在大括号里面输入@Override就会弹出接口的选择,我使用的IDEA,eclipse不知道有没有,没有就把代码抄下来

java的GUI学习(一):认真详细初识Frame类_第7张图片

myframe.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e);
            }
            @Override
            public void windowActivated(WindowEvent e) {
                super.windowActivated(e);
            }
 });
我们将代码里面的super这个引用父类的方法先去掉,改成输出,如下 目的是看这两个接口在什么时候会调用(e先不用管,以后说)
myframe.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("windowClosing");
            }
            @Override
            public void windowActivated(WindowEvent e) {
                System.out.println("windowActivated");
            }
});
3.我们运行一下

java的GUI学习(一):认真详细初识Frame类_第8张图片
java的GUI学习(一):认真详细初识Frame类_第9张图片

我们看到当我们将窗口隐藏后,再点击窗口,就会在控制台输出这个windowActived(字面意思就是窗口已经激活)
我们再点击窗口右上角的关闭键,发现他会调用public void windowClosing(WindowEvent e) 这个方法,如下

java的GUI学习(一):认真详细初识Frame类_第10张图片

这样子我们就知道从哪里下水来实现关闭窗口的功能了
上面我们说到点击关闭键就会调用…Closing方法,我们就在方法里面写一个强制结束程序的代码就可以关闭窗口了,如下代码

myframe.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("windowClosing");
                System.exit(0);//强制关闭程序
            }
            @Override
            public void windowActivated(WindowEvent e) {
                System.out.println("windowActivated");
            }
 });
我们再运行,再点击关闭键,发现就可以关闭了,nice Frame就暂时讲到这里,代码贴上
//package boke;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

class Main{
//public class FrameDemo {

    public static void main(String[] args) {
        Frame myframe = new Frame("MyFirstFrame");
        //myframe.setTitle("MyFirstFrame");
        //设置窗口为可见的
        myframe.setVisible(true);
        //设置窗口的宽和高
        myframe.setSize(200,200);
        //设置出口段初始位置x,y
        myframe.setLocation(100,100);
        myframe.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("windowClosing");
                System.exit(0);
            }
            @Override
            public void windowActivated(WindowEvent e) {
                System.out.println("windowActivated");
            }
        });
    }
}

你可能感兴趣的:(java)