Java 如何声明JComboBox?

Java 如何声明JComboBox?,java,swing,jcombobox,Java,Swing,Jcombobox,我正在创建一个使用下拉列表的程序,但我被困在JComboBox的声明行,我收到以下错误消息: 这条线上有多个标记 -构造函数JComboBox(字符串[])是 未定义 -行断点:JComboBox[行:25]- JComboBox() 无论我如何定义JComboBox,我都会遇到某种错误。请帮帮我 下面是公共类的代码: import javax.swing.*; import java.awt.FlowLayout; import java.awt.Font; i

我正在创建一个使用下拉列表的程序,但我被困在JComboBox的声明行,我收到以下错误消息: 这条线上有多个标记 -构造函数JComboBox(字符串[])是 未定义 -行断点:JComboBox[行:25]- JComboBox() 无论我如何定义JComboBox,我都会遇到某种错误。请帮帮我

下面是公共类的代码:

    import javax.swing.*;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import javax.swing.JFrame;
    import javax.swing.JTextField;
    import javax.swing.JRadioButton;
    import javax.swing.ButtonGroup;
    import java.awt.event.ItemListener;
    import java.awt.event.ItemEvent;

    public class JComboBox extends JFrame {

        private JComboBox box;
        private JLabel picture;

        private static String[] filename = { "p.png", "i.png" };
        private Icon pics[] = { new ImageIcon(getClass().getResource(filename[0])),
                new ImageIcon(getClass().getResource(filename[1])) };

        public JComboBox() {

            super("This is the title");
            setLayout(new FlowLayout());

            JComboBox box = new JComboBox(filename);

            box.addItemListener(new ItemListener() {
                public void itemStateChanged(ItemEvent event) {
                    if (event.getStateChange() == ItemEvent.SELECTED) {
                        picture.setIcon(pics[box.getSelectedIndex()]);
                    }
                }
            });

            add(box);
            picture = new JLabel(pics[0]);
            add(picture);

        }

    }
这是主类的代码:

    import javax.swing.*;

    public class JComboBox1 extends JFrame {

        public static void main(String[] args) {


            JComboBox Box = new JComboBox();
            Box.setVisible(true);
            Box.setSize(400,400);
            Box.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        }

    }

谢谢。

正如@Andy提到的,您的问题是您的类和swing组件的名称发生冲突。如果您必须将类命名为JComboBox,那么您必须使用完全限定的名称引用swing组件

public class JComboBox extends JFrame {

    private javax.swing.JComboBox box;

如果将鼠标悬停在带有IDE的私有实例上,您应该会看到与您在其中创建JComboBox类的包相匹配的完全限定名。省去一些麻烦,重新命名您的类。

您的名称与现有的Swing类冲突,您是使用
import javax.Swing.
导入的。尝试更改类名。谢谢!它解决了我的问题。我早该知道的,哈哈。我猜这还不够。可能还需要去掉
import javax.swing.*
。最好的答案是不要那样做。不要将类命名为与标准库类完全相同的类。甚至避免使用Swing用来区分其类的前缀。这很让人困惑,而且会让你花费时间和悲伤。我总是喜欢用导入的方式来表达,但这只是我的偏好。上述内容只是为了让人们更深入地了解正在发生的事情,但是的,我同意你的观点,不这样做是最好的答案。:)我只是通过重命名这个类来修复它。我早该知道的,这个错误是新手犯的。谢谢大家!!我很抱歉没有给你一个徽章“我接受这个答案”。我现在确定了。再次感谢您的帮助!祝你今天愉快!:)