鱼C论坛

 找回密码
 立即注册
查看: 3207|回复: 3

[已解决]ItemListener()监听器失去作用

[复制链接]
发表于 2017-7-2 10:39:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
新手上路,请多关照。


使用下拉列表,下拉列表监听器失去作用。

代码如下:

  1. package com.zsgc.jframe;

  2. import java.awt.GridLayout;
  3. import java.awt.event.ItemEvent;
  4. import java.awt.event.ItemListener;

  5. import javax.swing.JComboBox;
  6. import javax.swing.JFrame;
  7. import javax.swing.JLabel;
  8. import javax.swing.JPanel;
  9. import javax.swing.JTextField;

  10. /**
  11. *
  12. * @author 23203 增加学生信息的窗体
  13. *
  14. */
  15. public class InsertFrane extends JFrame implements ItemListener { // ItemListener
  16.                                                                                                                                         // 下拉列表监听器
  17.         private JPanel panel1, panel2, panel3, panel4, panel5;
  18.         private JComboBox<String> comboBox1, comboBox2, comboBox3, comboBox4,
  19.                         comboBox5;
  20.         private String nation[] = { "汉", "白", "傣", "蒙古族", "水族", "维吾尔族", "美" };
  21.         private String sex[] = { "男", "女" };
  22.         private int START_YEAR = 1980;
  23.         private int END_YEAR = 2010;

  24.         public static void main(String[] args) {
  25.                 InsertFrane A = new InsertFrane();
  26.                 A.setVisible(true);
  27.                 A.pack();

  28.         }

  29.         public InsertFrane() {
  30.                 comboBox1 = new JComboBox<String>(nation);
  31.                 comboBox2 = new JComboBox<String>(sex);
  32.                 comboBox3 = new JComboBox<String>();
  33.                 comboBox4 = new JComboBox<String>();
  34.                 comboBox5 = new JComboBox<String>();
  35.                 panel1 = new JPanel();
  36.                 panel2 = new JPanel();
  37.                 panel3 = new JPanel();
  38.                 panel4 = new JPanel();
  39.                 panel5 = new JPanel();

  40.                 setTitle("增加学生信息");
  41.                 setLocation(200, 200);
  42.                 setResizable(false);
  43.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  44.                 setLayout(new GridLayout(5, 1));
  45.                 panel1.add(new JLabel("学号:"));
  46.                 panel1.add(new JTextField(10));
  47.                 panel2.add(new JLabel("姓名:"));
  48.                 panel2.add(new JTextField(10));
  49.                 panel3.add(new JLabel("专业:"));
  50.                 panel3.add(new JTextField(10));
  51.                 panel4.add(new JLabel("民族:"));
  52.                 panel4.add(comboBox1);
  53.                 panel4.add(new JLabel("           性别:"));
  54.                 panel4.add(comboBox2);
  55.                 panel5.add(new JLabel("生日:年:"));
  56.                 panel5.add(comboBox3);
  57.                 panel5.add(new JLabel("月:"));
  58.                 panel5.add(comboBox4);
  59.                 panel5.add(new JLabel("日:"));
  60.                 panel5.add(comboBox5);
  61.                 add(panel1);
  62.                 add(panel2);
  63.                 add(panel3);
  64.                 add(panel4);
  65.                 add(panel5);

  66.                 // 初始化年月日
  67.                 for (int i = START_YEAR; i <= END_YEAR; i++) {
  68.                         comboBox3.addItem("" + i);
  69.                 }// 初始化年份
  70.                 for (int i = 1; i <= 12; i++) {
  71.                         comboBox4.addItem("" + i);
  72.                 }// 初始化月份
  73.                 for (int i = 1; i <= 31; i++) {
  74.                         comboBox5.addItem("" + i);
  75.                 }// 初始化号

  76.         }

  77.         /**
  78.          * 下拉列表事件,解决闰年二月份问题
  79.          */
  80.         @Override
  81.         public void itemStateChanged(ItemEvent arg0) {
  82.                 int data = 31;
  83.                 Object obj = comboBox4.getSelectedItem(); // getSelectedItem()方法,返回当前下拉列表的值(以对象的形式返回)
  84.                 // 取得当前月份

  85.                 if (obj != null)
  86.                         comboBox5.removeAllItems();// removeAllItems()方法,删除掉下拉列表的所有的项目,清空掉日

  87.                 int mouth = Integer.valueOf(obj.toString());// 将对象(月份)变为整数
  88.                 if (mouth == 4 || mouth == 6 || mouth == 9 || mouth == 11) {
  89.                         data = 30;
  90.                 } else if (mouth == 2) {
  91.                         int year = Integer.valueOf(comboBox3.getSelectedItem().toString());// 取得当前年号
  92.                         if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))// 是闰年
  93.                                 data = 29;
  94.                         else
  95.                                 data = 28;

  96.                 }
  97.                 for (int i = 1; i <= data; i++) {
  98.                         comboBox5.addItem("" + i);
  99.                 }// 添加号

  100.         }
  101. }
复制代码


感谢大神帮助。
最佳答案
2017-7-2 21:41:46
我大概看了下,原因出在你没有注册监听器,在你上面给的代码的第86行空处添加一句

  1. comboBox4.addItemListener(this);
复制代码

即可解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-2 20:46:48 | 显示全部楼层
又沉了,又沉了。
大神们都忙着考试吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-2 21:41:46 | 显示全部楼层    本楼为最佳答案   
我大概看了下,原因出在你没有注册监听器,在你上面给的代码的第86行空处添加一句

  1. comboBox4.addItemListener(this);
复制代码

即可解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-2 21:51:02 | 显示全部楼层
零度非安全 发表于 2017-7-2 21:41
我大概看了下,原因出在你没有注册监听器,在你上面给的代码的第86行空处添加一句

原来错误在这个,感谢大神!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-16 18:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表