Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1327714
  • 博文数量: 131
  • 博客积分: 9950
  • 博客等级: 中将
  • 技术积分: 1492
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-05 18:32
文章分类

全部博文(131)

文章存档

2008年(3)

2007年(37)

2006年(91)

我的朋友

分类: Java

2007-07-01 16:58:05

前一段时间我在写了一个关于JAVA滚动列表的简单的计算器,代码如下:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Test37 extends Applet implements ItemListener,ActionListener{
    List list1,list2;//声明两个滚动列表list1,list2
    TextArea text1,text2;//声明两个文本框text1,text2
    int index = 0;//定义一个整形变量index,初始值为0
   
    public void init(){//初始化
        list1 = new List(4,false);//设置list1的可见行数为4,不能多项选择
        list2 = new List(3,false);//设置list2的可见行数为3,不能多项选择
        text1 = new TextArea(6,15);//定义text1的大小
        text2 = new TextArea(6,15);//定义text2的大小
        list1.add("计算1+2+...");//往LIST1里添加内容
        list1.add("计算1*1+2*2+3*3...");
        list1.add("计算1*1*1+2*2*2+3*3*3...");
       
        for(int i=1;i<=100;i++){
            list2.add("前"+i+"项和");
            }
        add(list1);add(list2);add(text1);add(text2);//将组件加入到面板中去
        list1.addItemListener(this);list2.addItemListener(this);//进行监听
        }
        public void itemStateChanged(ItemEvent e){
            if(e.getItemSelectable()==list1){//getItemSelectable()方法返回ItemEvent事件的事件源
                text1.setText(list1.getSelectedItem());//设置text1文本框的内容(当前拉菜单中选中的内容)
                index = list1.getSelectedIndex();//把当前下拉菜单选中的选项的索引值给整形变量index,上面我们定义的"计算1+ 2+..."的索引值是0,"计算1*1+2*2+3*3..."的索引值是1,"计算1*1*1+2*2*2+3*3*3..."的索引值是2
                }
            }
        public void actionPerformed(ActionEvent e){//list2监听接口
            int n = list2.getSelectedIndex(),sum=0;//把list2中选中选项的索引值赋值给n
            String name = list2.getSelectedItem();//把list2中选中选项的内容赋值给字符串 变量name
            switch(index){
                case 0:
                      for(int i =1;i<=n+1;i++){
                          sum = sum + i;
                          }
                          break;
                case 1:
                      for(int i =1;i<=n+1;i++){
                          sum = sum +i*i;
                          }
                          break;
                case 2:
                      for(int i =1;i<=n+1;i++){
                          sum = sum +i*i*i;
                          }
                          break;
                default:
                       sum = -100;
                }
        text2.setText(name+"等于"+sum);//设置文本框text2内容
            }
    }

由于我的刚开始定义的时候把list2定义成了ItemEvent,而在下面定义List2的接口的时候却写成了actionPerformed,所以就导致了计算的结果无法正常显示出来了。

PS:
ActionLintsner是所有监听器的父类,其它监听器可以监听的事件都可以被它捕获
ItemListener用于捕获带有item的组件产生的事件,如ComboBox,CheckBox,RadioButton, ToggleButton,接口中定义的itemStateChanged(ItemEvent e)将执行需要在已选定(或已取消选定)项时发生的操作
阅读(2107) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~