Java 实现ItemListener
我在itemStateChanged部分遇到了问题。当我编译程序时,我得到了“找不到变量”错误,我似乎无法找出我哪里做错了。非常感谢您的帮助。多谢各位Java 实现ItemListener,java,swing,jframe,jpanel,itemlistener,Java,Swing,Jframe,Jpanel,Itemlistener,我在itemStateChanged部分遇到了问题。当我编译程序时,我得到了“找不到变量”错误,我似乎无法找出我哪里做错了。非常感谢您的帮助。多谢各位 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Postcode extends JFrame implements ItemListener { public static void main(String[] arg) {
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";
}
}
}
在itemStateChanged中,您正在对
itemStateChanged()
范围内未知的变量调用.getSelectedItem()
,其次,我认为您不想对字符串数组(code
)调用此方法,我认为您应该使用e.getItem()
或e.getItemSelectable
请参阅itemStateChanged中的文档,您正在对
itemStateChanged()
范围内未知的变量调用.getSelectedItem()
,其次,我认为您不想对字符串数组(code
)调用此方法,我认为您使用的是e.getItem()
或e.getItemSelectable
请参阅上的文档,您的代码有很多问题,因此我必须在这里发布完整的解决方案。修复方法: 将变量声明为成员变量 在
组合框中调用getSelectedItem()
,而不是在字符串数组中调用
正确使用JLabel.setText()
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");
}
}
你的代码有很多问题,所以我必须在这里发布完整的解决方案。修复方法:
将变量声明为成员变量
在组合框中调用getSelectedItem()
,而不是在字符串数组中调用
正确使用JLabel.setText()
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");
}
}
我不认为Java只会说“找不到变量”,而没有变量丢失的地方,请整个堆栈跟踪或错误行?在ItemStateChanged中,code
未在本地范围内声明,将其作为类的属性,并使用this.code来代替它
我不认为Java只会说“找不到变量”,而没有变量缺失的点,请完整堆栈跟踪或错误行?在ItemStateChanged中,code
未在本地范围内声明,请将其作为类的属性并使用this.code来代替它
非常感谢,您的答案真的帮助了我=)非常感谢,您的答案真的帮助了我=)