Java学习笔记之SWING -- 基本SWING程序(基础的ActionListener响应)

前言:随着慢慢的深入,发现其实自己什么都不懂,顿时优越感全失。本来么,做程序的人要这种优越感做什么,只会让你自己走下坡路的,不断的吸取和理解再尝试才是生存之道。还是回到基础的东西来说吧,不然以后又是碰到一大堆的问题。

       关于ActionListener的响应问题,就我的理解可以有两种方法。第一种就是你放到一个新的类里面,实现ActionListener接口,然后写好public void actionPerformed(ActionEvent e)的方法。这种当继承自JFrame还是蛮有用的,但是如果是一个在public static void main(String[] args)中建立一个JFrame,然后对里面的(比如按钮)实现监听,那么去实现ActionListener接口就不那么合适了(哎,很多都是当你做过后才知道什么是合适的),不过Java提供了另一种解决方案:

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

public   class  ActionListenerTest  {
    
public static void main(String[] args) {
        JFrame frame 
= new JFrame("Button Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        
final JButton jbClose = new JButton("Close the Frame");
        jbClose.addActionListener(
new ActionListener () {
            
public void actionPerformed(ActionEvent e) {
                
if (e.getSource().equals(jbClose)) {
                    System.exit(
0);
                }

            }

        }

        );
        
        frame.add(jbClose);
        frame.pack();
        frame.setVisible(
true);
    }

}

也就是在addActionListener的参数中新定义到一个ActionListenner并重写它的actionPerformed。不过要注意的是,这个actionPerformed一定要是public的,不然权限不够。还有就是里面用到的组件在外部必须声明为final的,这点也许会造成些许使用的限制。

      另一种其实是很常用的那种,前面也用到过,不过这里再写一遍好了,翻来翻去很麻烦的。

import  java.awt. * ;
import  javax.swing. * ;
import  java.awt.event. * ;
public   class  ButtonFrame extends JFrame implements ActionListener  {
        JButton jbClose 
= null;
    
public ButtonFrame() {
        super(
"ButtonFrame Test");
        jbClose 
= new JButton ("Close the Frame in ButtonFrame");
        jbClose.addActionListener(
this);
        
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        
this.add(jbClose);
        
this.pack();
        
this.setVisible(true);
    }

    
    
public void actionPerformed(ActionEvent e) {
        
if (e.getSource().equals(jbClose)) {
            System.exit(
0);
        }

    }

    
public static void main(String[] args) {
        ButtonFrame bf 
= new ButtonFrame();
    }

}

 

两个程序的效果是一样的,都是点击了按钮后就结束程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值