一个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("政治开课时间");
}
}
}
...全文
162 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
solomonxh 2004-06-12
  • 打赏
  • 举报
回复
getActionCommand()
不知道事件的这个方法是否可以,你试一下吧,我不确定的说
solomonxh 2004-06-12
  • 打赏
  • 举报
回复
你可以通过得到事件属性是单击还是双击来区别处理吧
ayace 2004-06-12
  • 打赏
  • 举报
回复
ivy8890(E宁)

这位大哥 那你说应该如何重写呢?我还是想不出什么办法啊?我的JAVA知识有限。如果比较简单您比较有空,可不可以帮我写一下。我比较笨笨 请原谅 谢谢你拉
ivy8890 2004-06-11
  • 打赏
  • 举报
回复
你的addItemListener(this)并不单单是单击事件的监视器,还包括选择事件,失去选择事件,你在单击时,也同时触发了这两个事件。这两个事件正好一个在addActionListener(this)之前,一个在addActionListener(this)之后。就成了你上面所说的了。重写itemStateChanged()吧。
ivy8890 2004-06-11
  • 打赏
  • 举报
回复
双击时以下运行了。

list1.addItemListener(this); //给滚动列表增加单击事件的监视器
list1.addActionListener(this); //给滚动列表增加双击事件的监视器
list1.addItemListener(this); //给滚动列表增加单击事件的监视器

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧