`
xuantian868
  • 浏览: 30523 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
社区版块
存档分类
最新评论

java中的内部类和匿名内部类

    博客分类:
  • Java
阅读更多
直接看程序。
package org.ui.swing.actionEvent;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * 用内部类实现:
 * 该程序实现的功能是加法计算,有三个输入框,点按钮时计算出前两个输入框的和放到第三个输入框中。
 * 20090107---22:54
 * 内部类的优点:
 * 可以方便的访问包装类的成员方法和函数
 * 可以更清楚的组织逻辑,防止不应该被其他类访问时即对外隐藏信息
 * */
public class TFMath3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TFrame3 fm=new TFrame3();
		fm.launchFrame();
	}
}

class TFrame3 extends Frame{
	TextField t1,t2,t3;
	public TFrame3(){
		//使用匿名内部类实现点击关闭图标窗口关闭。
		this.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.out.println("over");
				setVisible(false);
				System.exit(0);//正常退出
				//System.exit(-1);//非正常退出
			}
			
		});
	}
	public void launchFrame(){
		
		t1=new TextField(10);//宽度10
		t2=new TextField(10);
		t3=new TextField(15);
		Label lb=new Label("+");
		Button bt=new Button("=");
                   //给button注册事件监听器
		bt.addActionListener(new MyMonitor());
		setLayout(new FlowLayout());//因为frame默认是borderlayout,所以要设置FlowLayout
		add(t1);
		add(lb);
		add(t2);
		add(bt);
		add(t3);
		pack();
		
		this.setVisible(true);
	}
	
	//因为使用的是内部类,所以可以直接访问外部成员
	private class MyMonitor implements ActionListener{
		public void actionPerformed(ActionEvent e){
			int num1=Integer.parseInt(t1.getText());
			int num2=Integer.parseInt(t2.getText());
			t3.setText(""+(num1+num2));
		}
	}
	
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics