ActionLintsner都实现此接口,其它监听器可以监听的事件都可以被它捕获

public interface ActionListener extends EventListener
The listener interface for receiving action events.
The class that is interested in processing an action event implements this interface, and the object created with that class is registered with a component, using the component's addActionListener method. When the action event occurs, that object's actionPerformed method is invoked.

actionPerformed(ActionEvent e)
          Invoked when an action occurs.

ItemListener用于捕获带有item的组件产生的事件,如ComboBox,CheckBox,RadioButton,ToggleButton,接口中定义的itemStateChanged(ItemEvent e)将执行需要在已选定(或已取消选定)项时发生的操作

public interface ItemListenerextends EventListenerThe listener interface for receiving item events.
The class that is interested in processing an item event implements this interface. The object created with that class is then registered with a component using the component's addItemListener method. When an item-selection event occurs, the listener object's itemStateChanged method is invoked.

void itemStateChanged(ItemEvent e)
Invoked when an item has been selected or deselected by the user. The code written for this method performs the operations that need to occur when an item is selected (or deselected).

package swing.combox;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel; public class YearMonthDay extends JFrame { private static final long serialVersionUID = 1L;
private final int STARTYEAR = 2000;//年份的开始值
private final int ENDYEAR = 2020;//年份的结束值 JPanel contentPane;
//年月日的选择框
JComboBox<String>
cboYear = new JComboBox<String>(),
cboMonth = new JComboBox<String>(),
cboDay = new JComboBox<String>(); //年月日标签
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JLabel jLabel3 = new JLabel();
public YearMonthDay() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jbInit(); }
private void jbInit(){ contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
setSize(new Dimension(400, 300));
setTitle("年月日下拉列表级联");
// 年的下拉选择框
cboYear.setFont(new java.awt.Font("Dialog", Font.BOLD, 13));
cboYear.setBounds(new Rectangle(0, 0, 55, 18));
// 月的下拉选择框
cboMonth.setFont(new java.awt.Font("Dialog", Font.BOLD, 13));
cboMonth.setBounds(new Rectangle(80, 0, 45, 18));
cboMonth.addItemListener(new DateItemAdapter(this));
// cboMonth
// 日的下拉选择框
cboDay.setFont(new java.awt.Font("Dialog", Font.BOLD, 13));
cboDay.setBounds(new Rectangle(150, 0, 45, 18));
// cboDay.setEditable(true);
// 年的label
jLabel3.setFont(new java.awt.Font("Dialog", Font.BOLD, 15));
jLabel3.setText("年");
jLabel3.setBounds(new Rectangle(60, 0, 20, 20));
// 月的label
jLabel2.setFont(new java.awt.Font("Dialog", Font.BOLD, 15));
jLabel2.setText("月");
jLabel2.setBounds(new Rectangle(130, 0, 20, 20));
// 日的label
jLabel1.setFont(new java.awt.Font("Dialog", Font.BOLD, 15));
jLabel1.setText("日");
jLabel1.setBounds(new Rectangle(200, 0, 20, 20)); contentPane.add(cboYear);
contentPane.add(cboMonth);
contentPane.add(cboDay);
contentPane.add(jLabel3);
contentPane.add(jLabel2);
contentPane.add(jLabel1); //添加初始值
AddInfo();
} private void AddInfo() {
//年下拉选择框
for (int i = STARTYEAR; i < ENDYEAR; i++) {
cboYear.addItem("" + i);
} //月下拉选择框
for (int i = 0; i < 12; i++) {
cboMonth.addItem("" + (i + 1));
} //日下拉选择框
for (int j = 0; j < 31; j++) {
cboDay.addItem("" + (j + 1));
}
}
public void cboMonth_itemStateChanged(ItemEvent e) { Object obj = cboMonth.getSelectedItem();// 取得选中月份 if (obj != null) {
cboDay.removeAllItems();// 清空日的下拉列表框 int month = Integer.valueOf(obj.toString());
if (month==5) {//test JComboBox api combox method setEnabled()
this.cboDay.setEnabled(false);
}
int days = 31;
if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else if (month == 2) {
//取得选中年份
int year = Integer.parseInt(cboYear.getSelectedItem()
.toString());
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
// 是闰年
days = 29;
} else {
// 不是闰年
days = 28;
}
}//if for (int j = 0; j < days; j++) {
cboDay.addItem("" + (j + 1));
}//for
}//if
}//if }//end class // 事件监听器
class DateItemAdapter implements ItemListener {
private YearMonthDay adaptee;
DateItemAdapter(YearMonthDay adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange()==ItemEvent.SELECTED) {
System.out.println("was invoked");
adaptee.cboMonth_itemStateChanged(e);
}
}
}
package swing.combox;

public class Test {

     public static void main(String[] args) {
YearMonthDay testDate = new YearMonthDay();
testDate.setVisible(true);
testDate.setBounds(200, 200, 250, 100); }
}

http://blog.sina.com.cn/s/blog_5f20c4740100e3xk.html

JComboBox ItemListener监听器

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JComboBox;

class itemListener implements ItemListener {

public void itemStateChanged(ItemEvent e) {

if (e.getStateChange() == ItemEvent.SELECTED) {
    JComboBox jcb = (JComboBox) e.getSource();

System.out.println((String) (jcb.getSelectedItem()));
    System.out.println(jcb.getSelectedIndex());
   } else {

}

}

}

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

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

http://ribbonchen.blog.163.com/blog/static/118316505200988105942563/

(总结)Swing组件的使用---下拉式菜单(menu),弹出式菜单(JPopupMenu),选项卡窗体(JTabbedPane)

http://blog.csdn.net/lyxaiclr/article/details/7391318

java 下拉框级联及相关(转)的更多相关文章

  1. [转]html 下拉框级联

    <html> <head> <title>html 下拉框级联</title> <meta charset="UTF-8"/& ...

  2. layui select 下拉框 级联 动态赋值 与获取选中值

    //下拉框必须在 class="layui-form" 里 不然监听事件没有作用 <div class="layui-form" > <div ...

  3. java下拉框,滚动条

    package com.soft.test; /** * 下拉列表.下拉框.滚动条的使用 */ import javax.swing.*; import java.awt.*; public clas ...

  4. Selenium+java - 下拉框处理

    常见下拉框也分两种:一种是标准控件和非标准控件(一般为前端开发人员自己封装的下拉框),本篇文章中将重点讲解标准下拉框操作. 1.Select提供了三种选择某一项的方法 select.selectByI ...

  5. java下拉框转换公共方法

    1. 下拉框实例类 import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang3.Boolean ...

  6. Jquery+Ajax下拉框级联查询

  7. EasyUI下拉框级联

    EasyUI用来实现后台界面还是可以的,毕竟面对的是小众群体而非广大的用户,简单为美.这里想聊的功能是一种下拉框的联动,比如我选中了下拉框A的某一项,那么下拉框B的选项就是甲乙丙丁,如果我选了A的另一 ...

  8. ajax,下拉框级联

    js代码: $(document).ready(function() { $("#type1").change(function(){ var type1Code=$(" ...

  9. MVC+knocKout.js 实现下拉框级联

    数据库:部门表和员工表 在控制器里面的操作: public ActionResult Index3() { ViewBag.departments = new SelectList(getDepart ...

随机推荐

  1. Qt编程之转换成8,16bit的灰度图

    代码大致是下面这样的.是8bit的灰度图,不是16bit. QString img_path = "C:\\Users\\Yajun Dou\\Desktop\\test.bmp" ...

  2. explorer.exe进程简单介绍

    explorer.exe是Windows程序管理器或者Windows资源管理器,它用于管理Windows图形壳,包括开始菜单.任务栏.桌面和文件管理.不过也发现有大量的恶意病毒木马插入到explore ...

  3. 【转】GCC4.6编译的warning -Werror

    原文网址:http://blog.sina.com.cn/s/blog_605f5b4f0101bct7.html New warnings for unused variables and para ...

  4. javascrpit开发连连看记录-小游戏

        工作之余,总想做点什么有意思的东西.但是苦于不知道做什么,也就一直没有什么动作.在一个午饭后,跟@jedmeng和@墨尘聊天过程中,发现可以写一些小东西来练练手,有以下几点好处:     1. ...

  5. Linux 文件系统同步

    同步就是将物理内存中dirty的页写入到磁盘中,保证磁盘和物理页之间的内容一致. 触发同步操作的时机: 1.周期性内核线程,扫描脏页,根据一定的规则选择脏页,将页写回到磁盘. 2.如果内核中的脏页过多 ...

  6. SSH方式登录github出现Permission denied (publickey)

    今天在公司上传了代码,回到家pull,结果竟然出现了“Permission denied (publickey)“这种东西.第一反应是key不对,可是上次明明用key登录过,不可能不对啊,难道是文件被 ...

  7. vim 的配色方案

    浅色: http://www.vimninjas.com/2012/09/14/10-light-colors/ 深色: http://www.vimninjas.com/2012/08/26/10- ...

  8. c++之 常用类型

    C/C++常用类型的范围 C/C++里常用的类型及表示范围如下表所示: 类型 sizeof 表示范围 说明 char 1 -128 - 127 -2^7 - (2^7 - 1) short 2 -32 ...

  9. 虚拟机设备直通的两种方式(Working in Progress)

    声明: 本博客欢迎转发.但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! pci passthroug ...

  10. JwPlayer播放器【去除Logo、去除版本信息】

    效果图: <html> <head> <title>JwPlayer播放器@杯中红茶</title> <script type="tex ...