标题:双击后显示内容一闪即过的问题
只看楼主
Sieben7
Rank: 2
等 级:论坛游民
帖 子:116
专家分:20
注 册:2007-4-16
 问题点数:0 回复次数:9 
双击后显示内容一闪即过的问题
import java.awt.*;
import java.awt.event.*;
class WindowList extends Frame
implements ItemListener,ActionListener
{ List list;
TextArea text;
int index=0;
WindowList()
{ list=new List(3,false);
text=new TextArea(2,20);
list.add("书包");
list.add("铅笔");
list.add("鞋子");
list.add("苹果");
add(list,BorderLayout.NORTH);
add(text,BorderLayout.CENTER);
list.addItemListener(this);
list.addActionListener(this);
setSize(500,200);
setVisible(true);
validate();
}
public void itemStateChanged(ItemEvent e)
{ String name=list.getSelectedItem();
index=list.getSelectedIndex();
switch(index)
{ case 0:
text.setText(name+": 单价:50元/个; 产地:北京;");
break;
case 1:
text.setText(name+": 单价:1元/支; 产地:浙江;");
break;
case 2:
text.setText(name+": 单价:200元/双; 产地:山东;");
break;
case 3:
text.setText(name+": 单价:5元/千克; 产地:山东;");
break;
default : text.setText(""); break;
}
}
public void actionPerformed(ActionEvent e)
{ String name=list.getSelectedItem();
switch(index)
{ case 0:
text.setText("本书包为学生专用书包,精美耐用,购买一周内如有质量问题可免费退货!");
break;
case 1:
text.setText("2B铅笔,考试专用,采用优质木材,高级炭黑所制!");
break;
case 2:
text.setText("与狼共舞真皮皮鞋,采用优质小牛皮,质量三包,如假包换!");
break;
case 3:
text.setText("山东优质红富士,优质无污染,口感美味醇厚!");
break;
default : text.setText(""); break;
}

}
}
public class EXE7_10
{ public static void main(String [] args)
{ new WindowList();
}
}



这个程序中,只有一个文本区,双击后显示内容一闪即过,无法停留在文本区中,而后显示的是单击应显示的内容。如何使双击应显示的内容长久停留在文本区中?嗯,先谢过~~o(∩_∩)o...





搜索更多相关主题的帖子: import false 苹果 鞋子 
2007-05-18 13:22
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

这是因为你双击的时候会触发ActionEvent,也会触发ItemEvent ,所以建议,不要添加ItemEvent的监听,自己添加鼠标事件自己来监听是双击还是单击


可惜不是你,陪我到最后
2007-05-18 13:55
Sieben7
Rank: 2
等 级:论坛游民
帖 子:116
专家分:20
注 册:2007-4-16
得分:0 
嗯,用鼠标事件来监听。:-)
双击既会触发ActionEvent,也会触发ItemEvent,所以“内容会一闪即过”,是这样理解的吧。
2007-05-18 14:06
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

是的,

你完全可以用另外一种方式来实现嘛

何必用鼠标点击的次数来决定呢,因为即使你点击了两下,但是你点击第一下的时候,鼠标事件还是一样被调用了

你可以用鼠标的左右键来区分


可惜不是你,陪我到最后
2007-05-18 14:09
Sieben7
Rank: 2
等 级:论坛游民
帖 子:116
专家分:20
注 册:2007-4-16
得分:0 
谢谢斑斑o(∩_∩)o...

[此贴子已经被作者于2007-5-18 15:02:22编辑过]

2007-05-18 15:02
Sieben7
Rank: 2
等 级:论坛游民
帖 子:116
专家分:20
注 册:2007-4-16
得分:0 
斑斑啊!

添加ItemEvent的监听,自己添加鼠标事件自己来监听是双击还是单击……请问具体这样实现呢?
- -||

[此贴子已经被作者于2007-5-18 16:12:31编辑过]

2007-05-18 16:11
Sieben7
Rank: 2
等 级:论坛游民
帖 子:116
专家分:20
注 册:2007-4-16
得分:0 
斑斑快来吧~

[此贴子已经被作者于2007-5-18 16:33:57编辑过]

2007-05-18 16:33
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
[CODE]import java.awt.*;
import java.awt.event.*;
class WindowList extends Frame
{
List list;
TextArea text;
int index=0;
private String name;
WindowList() {
list=new List(3,false);
text=new TextArea(2,20);
list.add("书包");
list.add("铅笔");
list.add("鞋子");
list.add("苹果");
add(list,BorderLayout.NORTH);
add(text,BorderLayout.CENTER);
list.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent me){
index=list.getSelectedIndex();
name=list.getSelectedItem();
if(me.getClickCount()>=2){
doClickTwo();
}else{
doClickOne();
}
}
});
setSize(500,200);
setVisible(true);
validate();
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
private void doClickOne(){
switch(index) {
case 0:
text.setText(name+": 单价:50元/个; 产地:北京;");
break;
case 1:
text.setText(name+": 单价:1元/支; 产地:浙江;");
break;
case 2:
text.setText(name+": 单价:200元/双; 产地:山东;");
break;
case 3:
text.setText(name+": 单价:5元/千克; 产地:山东;");
break;
default : text.setText(""); break;
}
}
private void doClickTwo(){
switch(index) {
case 0:
text.setText("本书包为学生专用书包,精美耐用,购买一周内如有质量问题可免费退货!");
break;
case 1:
text.setText("2B铅笔,考试专用,采用优质木材,高级炭黑所制!");
break;
case 2:
text.setText("与狼共舞真皮皮鞋,采用优质小牛皮,质量三包,如假包换!");
break;
case 3:
text.setText("山东优质红富士,优质无污染,口感美味醇厚!");
break;
default : text.setText(""); break;
}
}
}
public class EXE7_10 {
public static void main(String [] args) {
new WindowList();
}
}[/CODE]

这是我的实现,但是还是会闪一下,这没办法,因为你双击的时候,击第一下的时候,还是会触发鼠标事件

可惜不是你,陪我到最后
2007-05-18 17:30
Sieben7
Rank: 2
等 级:论坛游民
帖 子:116
专家分:20
注 册:2007-4-16
得分:0 
太高明了!!今天从斑斑这里收获不少,真是太谢谢谢谢谢谢了~以后常来顶斑斑

[此贴子已经被作者于2007-5-18 18:37:03编辑过]


2007-05-18 18:36
victoryhui
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-5-17
得分:0 
呵,刚学java,看不太懂

2007-05-19 11:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-140426-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.213057 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved