Java图形用户界面设计—三色标签

题目

1. 编写程序,实现一个窗口,包含3个标签,其背景分别为红、黄、灰3色,并通过implements WindowListener接口或extends WindowAdapter适配器类实现窗口的关闭。

两种实现方式:

①用implements WindowListener接口方法

package Tuxinghua3;
import java.awt.*;
import java.awt.event.*;
//用implements WindowListener接口方法
public class njj01 extends Frame implements WindowListener {//继承Frame类,实现WindowListener接口
    
    public static void main(String args[]){
        njj01 window = new njj01();
        window.setVisible(true);
    }
    
    public njj01(){
  
        Label label1 = new Label("Red Label", Label.CENTER);
        label1.setBackground(Color.RED);
        Label label2 = new Label("Yellow Label", Label.CENTER);
        label2.setBackground(Color.YELLOW);
        Label label3 = new Label("Gray Label", Label.CENTER);
        label3.setBackground(Color.GRAY);
               
        Panel panel = new Panel(new FlowLayout());
        panel.add(label1);
        panel.add(label2);
        panel.add(label3);
        
        Panel emptyPanel = new Panel();
        panel.add(emptyPanel);
               
        add(panel);
               
        addWindowListener(this);//为窗口添加一个窗口事件监听器,使用内部类的方式实现。       
        
        setTitle("NJj's Label Frame");
        setSize(400, 300);
            }
  
    public void windowOpened(WindowEvent e) {}
    public void windowClosing(WindowEvent e) {
        dispose(); 
    }
    public void windowClosed(WindowEvent e) {}
    public void windowIconified(WindowEvent e) {}
    public void windowDeiconified(WindowEvent e) {}
    public void windowActivated(WindowEvent e) {}
    public void windowDeactivated(WindowEvent e) {}
    
}

②用extends WindowAdapter适配器的方法

package Tuxinghua3;
import java.awt.*;
import java.awt.event.*;
//用extends WindowAdapter适配器的方法
public class njj01 extends Frame {
    
    public static void main(String args[]){
        njj01 window = new njj01();
        window.setVisible(true);
    }
    
    public njj01(){
  
        Label label1 = new Label("Red Label", Label.CENTER);
        label1.setBackground(Color.RED);
        Label label2 = new Label("Yellow Label", Label.CENTER);
        label2.setBackground(Color.YELLOW);
        Label label3 = new Label("Gray Label", Label.CENTER);
        label3.setBackground(Color.GRAY);
               
        Panel panel = new Panel(new FlowLayout());
        panel.add(label1);
        panel.add(label2);
        panel.add(label3);
        
        Panel emptyPanel = new Panel();
        panel.add(emptyPanel);
               
        add(panel);
               
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                dispose();
            }
        });
        
        setTitle("NJj's Label Frame");
        setSize(400, 300);
    }
}

总结

第一种方法:

实现 WindowListener 接口需要实现所有的窗口事件监听器方法,

包括窗口打开、关闭、激活、失活、最小化、最大化等。

这样做的好处是可以对每个窗口事件进行特定的处理,而不是都使用默认的处理方式。

第二种方法:

而继承 WindowAdapter 适配器类只需要重写需要的方法,

其它方法都有默认的空实现,不需要全部实现。

这种方式实现窗口关闭时可以只重写 windowClosing 方法即可,

简化了代码,也不会影响其它窗口事件的处理。

So:

因此,通过实现 WindowListener 接口可以更加灵活地控制窗口事件的处理,

而通过继承 WindowAdapter 适配器类可以简化代码,

实现方式取决于具体的需求和使用场景。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值