前一段时间我在写了一个关于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) |