首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现ItemListener

实现ItemListener
EN

Stack Overflow用户
提问于 2012-09-17 03:03:51
回答 3查看 10.2K关注 0票数 1

我在itemStateChanged部分遇到了问题。当我编译这个程序时,我得到了“找不到变量”的错误,而且我似乎找不到哪里做错了。任何帮助都是非常感谢的。谢谢。

代码语言:javascript
复制
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Postcode extends JFrame implements ItemListener {

    public static void main(String[] arg) {
        JFrame fr = new JFrame("Melaka Postcode");
        fr.setSize(240, 125);
        fr.setVisible(true);
        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public Postcode() {
        String[] code = {"75450", "77000", "78000"};
        JLabel lb1 = new JLabel("Postcode");
        JLabel lb2 = new JLabel("District?");
        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();
        JComboBox cb = new JComboBox(code);
        cb.addItemListener(this);
        Font f = new Font("Verdana", Font.BOLD, 14);
        lb2.setFont(f);
        p1.add(lb1);
        p1.add(cb);
        p2.add(lb2);
    }

    public void itemStateChanged(ItemEvent e) {
        if (code.getSelectedItem().equals("75450")) {
            lb2.setText = "Bukit Beruang";
        }
        if (code.getSelectedItem().equals("77000")) {
            lb2.setText = "Jasin";
        }
        if (code.getSelectedItem().equals("75450")) {
            lb2.setText = "Alor Gajah";
        }
    }
}
EN

回答 3

Stack Overflow用户

发布于 2012-09-17 03:25:42

你的代码有很多问题,所以我必须在这里发布完整的解决方案。修复方法:

将变量声明为成员变量

combobox上调用getSelectedItem(),而不是在字符串数组上

正确使用JLabel.setText()

代码语言:javascript
复制
import java.awt.Font;
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 Postcode extends JFrame implements ItemListener {
    String[] code = { "75450", "77000", "78000" };

    JLabel lb1 = new JLabel("Postcode");

    JLabel lb2 = new JLabel("District?");

    JPanel p1 = new JPanel();

    JPanel p2 = new JPanel();

    JComboBox cb = new JComboBox(code);

    public static void main(String[] arg) {
        JFrame fr = new JFrame("Melaka Postcode");
        fr.setSize(240, 125);
        fr.setVisible(true);
        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public Postcode() {
        cb.addItemListener(this);

        Font f = new Font("Verdana", Font.BOLD, 14);

        lb2.setFont(f);

        p1.add(lb1);
        p1.add(cb);

        p2.add(lb2);

    }

    public void itemStateChanged(ItemEvent e) {
        if (cb.getSelectedItem().equals("75450"))
            lb2.setText("Bukit Beruang");
        if (cb.getSelectedItem().equals("77000"))
            lb2.setText("Jasin");
        if (cb.getSelectedItem().equals("75450"))
            lb2.setText("Alor Gajah");
    }

}
票数 5
EN

Stack Overflow用户

发布于 2012-09-17 03:23:04

在itemStateChanged中,你在一个itemStateChanged()作用域未知的变量上调用.getSelectedItem(),其次,我不认为你想在字符串数组(code)上调用这个方法,我认为你应该使用e.getItem()e.getItemSelectable

请参阅ItemEvent上的文档

票数 0
EN

Stack Overflow用户

发布于 2021-08-22 11:34:13

编辑:在我自己的代码中发现了类似的奇怪行为。尝试使用switch语句重写代码,而不是使用多个if语句。

代码语言:javascript
复制
public void itemStateChanged(ItemEvent e) {
switch(cb.getSelectedItem().toString()){

case "75450":
lb2.setText("Bukit Beruang");
break;

case "77000":
lb2.setText("Jasin");
break;
case "75451":                 //Changed this into a unique value
lb2.setText("Alor Gajah");    //because the switch statements 
break;                        //will throw error when supplied
}                                 //with repeated values


}

让我知道它是否对你有效!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12449792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档