zoukankan      html  css  js  c++  java
  • 9、JcomboBox下拉框事件监听

    9、JcomboBox下拉框事件监听


    JComboBox()的事件监听类ItemListener。其范例代码如下:

     1 import java.awt.*;
     2 import java.awt.event.*;
     3 import javax.swing.*;
     4 public class JComboBoxFrame extends JFrame
     5 {
     6     private JComboBox cb = new JComboBox();
     7     
     8     public JComboBoxFrame()
     9     {
    10         cb.addItem("1");
    11         cb.addItem("2");
    12         cb.addItem("3");
    13         
    14         cb.addItemListener(new ItemListener()
    15             {
    16                 public void itemStateChanged(ItemEvent event)
    17                 {
    18                     switch (event.getStateChange())
    19                     {
    20                     case ItemEvent.SELECTED: 
    21                         System.out.println("选中" + event.getItem());
    22                         break;
    23                     case ItemEvent.DESELECTED:
    24                         System.out.println("取消选中"+event.getItem());
    25                         break;
    26                     }
    27                 }
    28             });
    29         
    30         add(cb);
    31     }
    32     
    33     public static void main(String[] args)
    34     {
    35         JFrame frame = new JComboBoxFrame();
    36         frame.pack();
    37         frame.setVisible(true);
    38         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    39     }
    40 } 

          程序在执行时总是被触发两次。查找了一些资料发现,与ItemListener类中的itemStateChanged()事件的itemState有关,itemState在这里的状态有两个,Selected 和 deSelected(即选中和未被选中),所以,当改变下拉列表中被选中的项的时候,其实是触发了两次事件,第一次是上次被选中的项的 State 由 Selected 变为 deSelected ,即取消选择, 第二次是本次被选中的项的 State 由 deSelected 变为 Selected ,即新选中,所以,必然的 ItemStateChanged 事件中的代码要被执行两次了。

    可通过如下方法解决:

    if(e.getStateChange() == ItemEvent.SELECTED){
      //要执行的代码
      }   即为当事件是选中某一项的时候,才执行该代码。

     也可以用如下方法:

     1 comboBox = new JComboBox();
     2     comboBox.addItemListener(new ItemListener() {
     3       public void itemStateChanged(final ItemEvent e) {
     4         int index = comboBox.getSelectedIndex();
     5         if (index != 0) { // ==0表示选中的事第一个
     6           String content = comboBox.getSelectedItem().toString();
     7           System.out.println("index222="
     8               + index + ", content=" + content);
     9         }
    10       }
    11     });
  • 相关阅读:
    MQTT简单demo(java)
    MQTT协议开发心得
    浏览器播放RTSP格式视频流的解决方法
    JSON学习
    Redis安装和java代码实现增删改查
    创建一个简单的SpringMVC框架
    oracle创建只读权限的用户简单四步走(创建用户/赋连接权限/赋表权限/创建同义词)
    html读取图片
    ORACLE多表关联UPDATE 语句
    Oracle 闪回查询
  • 原文地址:https://www.cnblogs.com/hthuang/p/3468262.html
Copyright © 2011-2022 走看看