免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4770 | 回复: 3
打印 上一主题 下一主题

在JList上的监听事件! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-25 13:37 |只看该作者 |倒序浏览

  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. import javax.swing.event.*;//由于ListSelectionEvent是swing的事件,不是awt的事件,因此我们必须import
  5.                             //javax.swing.event.*。

  6. public class JList7 extends JFrame implements ListSelectionListener
  7. {
  8.     JList list = null;
  9.     JLabel label = null;
  10.     String[] s = {"美国","日本","大陆","英国","法国","意大利","澳洲","韩国"};
  11.    
  12.     public JList7()
  13.     {
  14.         JFrame f = new JFrame("JList");
  15.         Container contentPane = f.getContentPane();
  16.         contentPane.setLayout(new BorderLayout());
  17.         label = new JLabel();
  18.         
  19.         list = new JList(s);
  20.         list.setVisibleRowCount(5);
  21.         list.setBorder(BorderFactory.createTitledBorder("您最喜欢到哪个国家玩呢?"));
  22.         list.addListSelectionListener(this);
  23.         
  24.         contentPane.add(label,BorderLayout.NORTH);
  25.         contentPane.add(new JScrollPane(list),BorderLayout.CENTER);
  26.         f.pack();
  27.         f.show();
  28.         f.addWindowListener(new WindowAdapter() {
  29.             public void windowClosing(WindowEvent e) {
  30.                     System.exit(0);
  31.             }
  32.         });
  33.     }
  34.    
  35.     public static void main(String args[])
  36.     {
  37.         new JList7();
  38.     }
  39.    
  40.     public void valueChanged(ListSelectionEvent e)
  41.     {
  42.         System.out.println("eeee");
  43.         int tmp = 0;
  44.         String stmp = "您目前选取:";
  45.         int[] index = list.getSelectedIndices();//利用JList类所提供的getSelectedIndices()方法可得到用户所选取的所有
  46.         for(int i=0; i < index.length ; i++)//index值,这些index值由一个int array返回.
  47.         {
  48.             tmp = index[i];
  49.             stmp = stmp+s[tmp]+"  ";
  50.         }
  51.         label.setText(stmp);
  52.     }
  53. }

复制代码


请问为什么会输出两次"eeee",是说在JList上的监听要执行两次么?用什么方法可以只输出一次呢?

论坛徽章:
0
2 [报告]
发表于 2006-06-25 19:50 |只看该作者
public void valueChanged(ListSelectionEvent e)
    {
        Ssytem.out.println(e.getSource());
        System.out.println("eeee");
        ...
    }

你改变了List,不代表只有List会产生Event

论坛徽章:
0
3 [报告]
发表于 2006-06-26 00:49 |只看该作者
原帖由 perryhg 于 2006-6-25 19:50 发表
public void valueChanged(ListSelectionEvent e)
    {
        Ssytem.out.println(e.getSource());
        System.out.println("eeee");
        ...
    }

你改变了List,不代表只有List会 ...


我试了一下.的确是一个source.不太理解呀

论坛徽章:
0
4 [报告]
发表于 2006-06-27 02:10 |只看该作者
public void valueChanged(ListSelectionEvent e)
    {
        System.out.println(e.getValueIsAdjusting());
        System.out.println("eeee");
        ...
    }
这样就可以区分了,一个true,一个false,为什么是这样文档里面好像也说得不是很清楚。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP