CSDN的高手都到哪去了?!!! 再不解决,小弟要跳楼了。。。。在线等待 之所以会作两次,是因为,mouseclick会去做一次,而mouserelease时还会做一次,所以valuechange会被处理两次,不过这并不影响正常的使用,为什么会对这有疑问呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可是现在我要在valueChange()里记业务日志,每次我都要重复的记录两条,这样报表出来肯定是有毛病的。另外,撇开鼠标,我都过代码调用setSelectedIndex()方法,也会触发两次。请再给点指教,如何保证只触发一次。谢谢 那試一試這個:jlStatus.addMouseListener(new java.awt.event.MouseAdapter(){ public void mouseClicked(MouseEvent evt) { if(evt.getModifiers()!=MouseEvent.BUTTON1_MASK) return; valuechange(); }}); String oldvalue = ""; public void valueChanged(ListSelectionEvent e) { if(oldvalue.equals(jlStatus.getSelectedValue().toString())) return; oldvalue = jlStatus.getSelectedValue().toString(); try { System.out.println("in valueChanged"); 在valuechanged方法中,你判断e.getValueIsAdjusting(),有时为true,有时为false,应该可以解决你说的问题 用actionPerformed就可以了,在里面判断选择是否变化: String value = ""; void jComboBox1_actionPerformed(ActionEvent e) { if(!(value.equals(jComboBox1.getSelectedItem().toString()))){ value= jComboBox1.getSelectedItem().toString(); // } } 改為;定義全局編兩 int selectCount=-1;public void valueChanged(ListSelectionEvent e) { try { System.out.println("in valueChanged"); if(e.getSource() == jlStatus) { if(jlStatus.getSelectedIndex() == 0 && jlStatus.getSelectedIndex()!=selectCount) { selectCount=jlStatus.getSelectedIndex(); System.out.println("swing:Ready"); } if(jlStatus.getSelectedIndex() == 1 && jlStatus.getSelectedIndex()!=selectCount) { selectCount=jlStatus.getSelectedIndex(); System.out.println("swing:Acw"); } if(jlStatus.getSelectedIndex() == 2 && jlStatus.getSelectedIndex()!=selectCount) { selectCount=jlStatus.getSelectedIndex(); System.out.println("swing:Busy"); } if(jlStatus.getSelectedIndex() == 3 && jlStatus.getSelectedIndex()!=selectCount) { selectCount=jlStatus.getSelectedIndex(); System.out.println("swing:Other"); } } } catch(Exception ex) { System.out.println("error in valueChanged:" + ex); } } public class testJList extends Applet implements ListSelectionListenerjlStatus.addListSelectionListener(this);个人认为是代码里加了两个ListSelectionListener!!把jlStatus.addListSelectionListener(this);或implements ListSelectionListener去掉!! 楼主问的好象是JList吧,有addActionListener这个方法吗? 在valueChanged()的开头加判断:if( e.getValueIsAdjusting()) return; 你试一下这样,在我的机器上可以:还有我记得JList好像要加到一个JScrollPane上去的。jList1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) { jList1_mouseClicked(e); } });void jList1_mouseClicked(MouseEvent e) { if(e.getClickCount()==1) System.out.print("ok"); } 如何得到远程定义的类 [求助]这是为什么?为什么? think in java 中一段没看明白的话 求一个String的处理方法 请问让一个永远运行的线程结束是用一个boolean控制好,还是用捕捉InterruptedException的方法好呢。 怎样通过流把byte[]转换为long输出出来? jvm有版本问题吗 java中画3d图形,在线等待 请详细 举例 说明 jar 的用法 用途. valueOf()方法不存在?请大家帮忙看看~~~ 进来看看错误提示,谁来分析一下原因 一个初学者的迷惑
jlStatus.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(MouseEvent evt)
{
if(evt.getModifiers()!=MouseEvent.BUTTON1_MASK)
return;
valuechange();
}});
public void valueChanged(ListSelectionEvent e)
{
if(oldvalue.equals(jlStatus.getSelectedValue().toString()))
return;
oldvalue = jlStatus.getSelectedValue().toString();
try
{
System.out.println("in valueChanged");
String value = ""; void jComboBox1_actionPerformed(ActionEvent e) {
if(!(value.equals(jComboBox1.getSelectedItem().toString()))){
value= jComboBox1.getSelectedItem().toString();
//
}
}
定義全局編兩 int selectCount=-1;public void valueChanged(ListSelectionEvent e)
{
try
{
System.out.println("in valueChanged");
if(e.getSource() == jlStatus)
{
if(jlStatus.getSelectedIndex() == 0 && jlStatus.getSelectedIndex()!=selectCount)
{
selectCount=jlStatus.getSelectedIndex();
System.out.println("swing:Ready");
}
if(jlStatus.getSelectedIndex() == 1 && jlStatus.getSelectedIndex()!=selectCount)
{
selectCount=jlStatus.getSelectedIndex();
System.out.println("swing:Acw");
}
if(jlStatus.getSelectedIndex() == 2 && jlStatus.getSelectedIndex()!=selectCount)
{
selectCount=jlStatus.getSelectedIndex();
System.out.println("swing:Busy");
}
if(jlStatus.getSelectedIndex() == 3 && jlStatus.getSelectedIndex()!=selectCount)
{
selectCount=jlStatus.getSelectedIndex();
System.out.println("swing:Other");
}
}
}
catch(Exception ex)
{
System.out.println("error in valueChanged:" + ex);
}
}
个人认为是代码里加了两个ListSelectionListener!!
把jlStatus.addListSelectionListener(this);
或implements ListSelectionListener去掉!!
return;
还有我记得JList好像要加到一个JScrollPane上去的。jList1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
jList1_mouseClicked(e);
}
});void jList1_mouseClicked(MouseEvent e) {
if(e.getClickCount()==1)
System.out.print("ok");
}