一个JAVA初学者遇到困难了,老鸟来帮忙啊
ayace 2004-06-11 10:11:36 要求:
编写应用程序,有一个窗口对象,该窗口取它的默认布局:BorderLayout布局。
北面添加一个List组件,该组件有4个课程名称的选项。
中心添加一个文本区,当选择List组件中的某个选项后,文本区显示对该课程的介绍;
当双击List组件中的某个选项后,文本区显示对该课程的开课时间。
问题:
我编写的程序源码如下,可双击之后,文本区变成开课时间,可瞬间又自动变回了课程介绍,
请问是怎么一回事?如何解决?(我的环境:win2003server + jdk1.4.2)
程序源代码:
/*
2004-5-12 redsun
*/
/*
要求:
编写应用程序,有一个窗口对象,该窗口取它的默认布局:BorderLayout布局。
北面添加一个List组件,该组件有4个课程名称的选项。
中心添加一个文本区,当选择List组件中的某个选项后,文本区显示对该课程的介绍;
当双击List组件中的某个选项后,文本区显示对该课程的开课时间。
*/
import java.awt.*; //引入包
import java.awt.event.*; //引入包
public class E { //主类
public static void main(String args[]) { //入口函数
Frame frame1 = new Frame("HOHO"); //声明创建窗口
frame1.setSize(300, 200); //设置窗口大小
frame1.setVisible(true); //设置窗口默认可见
Mypanel panel1 = new Mypanel(); //声明创建我的画板
frame1.add(panel1); //向窗口添加画板
frame1.pack(); //设置紧凑方式显示
}
}
class Mypanel extends Panel implements ActionListener, ItemListener{ //继承Panel类,声明使用的双击,单击事件的接口
TextArea text1; //声明文本区
List list1; //声明滚动列表
Mypanel() { //构造方法
setLayout(new BorderLayout()); //设置布局为BorderLayout
text1 = new TextArea(10, 10); //创建文本区
list1 = new List(2); //创建滚动列表
list1.add("语文"); //向滚动列表添加项
list1.add("数学");
list1.add("外语");
list1.add("政治");
add(list1, "North"); //将滚动列表添加到面板的北部
add(text1, "Center"); //将文本区添加到面板的中间
list1.addItemListener(this); //给滚动列表增加单击事件的监视器
list1.addActionListener(this); //给滚动列表增加双击事件的监视器
}
public void itemStateChanged(ItemEvent e) { //实现单击接口中的方法
if(list1.getSelectedIndex() == 0) { //如果单击的为第一项
text1.setText("语文课程介绍"); //则显示“语文课程介绍”
} //以下雷同
else if(list1.getSelectedIndex() == 1) {
text1.setText("数学课程介绍");
}
else if(list1.getSelectedIndex() == 2) {
text1.setText("外语课程介绍");
}
else if(list1.getSelectedIndex() == 3) {
text1.setText("政治课程介绍");
}
}
public void actionPerformed(ActionEvent e) { //实现双击接口中的方法
if(list1.getSelectedIndex() == 0) { //如果双击的为第一项
text1.setText("语文开课时间"); //则显示“语文开课时间”
} //以下雷同
else if(list1.getSelectedIndex() == 1) {
text1.setText("数学开课时间");
}
else if(list1.getSelectedIndex() == 2) {
text1.setText("外语开课时间");
}
else if(list1.getSelectedIndex() == 3) {
text1.setText("政治开课时间");
}
}
}