【问题标题】:Java: getSelectedItem() is undefined for type stringJava:对于字符串类型未定义 getSelectedItem()
【发布时间】:2015-05-02 18:31:46
【问题描述】:

我的 java 程序有问题,我正在尝试使用 JComboBox 和 JButton 获取 if 语句的一些信息。问题是 .getSelectedItem() 未定义,我不知道该怎么做。 这些是组合框:

static String JCBDestinations, JCBNights, JCBAccomodation;
static String[] places, nights, stay;

//Destination drop down menu
    String[] JCBDestinations = { " ", "Paris", "Crete", "Croatia"};
    JComboBox places = new JComboBox(JCBDestinations);
    places.setSelectedIndex(4);
    places.addActionListener(this);

//Number of nights radio buttons
    String[] JCBNights = { " ", "7", "10", "14"};
    JComboBox nights = new JComboBox(JCBNights);
    nights.setSelectedIndex(4);
    nights.addActionListener(this);

//Accommodation type drop down menu
    String[] JCBAccomodation = {" ", "Hotel", "Villa", "Youth Hostel", "Bed & Breakfast"};
    JComboBox stay = new JComboBox(JCBAccomodation);
    stay.setSelectedIndex(4);
    stay.addActionListener(this);

//Find deal button
    JBFind = new JButton("Find Deal"); //Adding option 1 button
    window.add(JBFind);
    JBFind.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e)
        {

        }
    });

这是 If 语句:

public void actionPerformed(ActionEvent e) 
{

    if (e.getSource() == JBFind);
    {
        System.out.println("Calculating cost");

        JLBeforeVAT.setText("£499");
        JTAfterVAT.setText("£589");
    }   
            if (JCBDestinations.getSelectedItem().equals("Paris"))
            {
                if (JCBNights.getSelectedItem().equals("7"))
                {
                    if (JCBAccomodation.getSelectedItem().equals("Hotel"))
                    {
                        JLBeforeVAT.setText("£499");
                        JTAfterVAT.setText("£589");
                    }

                }

            }
}

【问题讨论】:

    标签: java string swing jcombobox


    【解决方案1】:

    错误消息准确地告诉你你做错了什么,所以这里的关键是仔细阅读它,并修复它显示的错误。您从 JComboBox 而非字符串数组中获得选择。组合框变量被命名为场所。所以

    if (places.getSelectedItem().equalsIgnoreCase("Paris"))
    

    其他问题:

    String[] JCBNights = { " ", "7", "10", "14"};
    JComboBox nights = new JComboBox(JCBNights);
    nights.setSelectedIndex(4);  // *****
    nights.addActionListener(this);
    

    您将选定的索引设置为 4,而它只上升​​到 3:0、1、2、3。

    【讨论】:

    • 我刚刚添加了你所说的,错误消失了,但是当我运行程序时出现一个新错误:线程“main”java.lang.IllegalArgumentException中的异常:setSelectedIndex:4 out of bounds at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:620) 在 Holiday_Booking_System.createGUI(Holiday_Booking_System.java:88) 在 Holiday_Booking_System.main(Holiday_Booking_System.java:44)
    • @geek101:再次批判性地查看您的错误/异常消息,实际上它会告诉您是哪一行导致了这个问题,Holiday_Booking_System.java:88。那么Holiday_Booking_System.java的第88行是哪一行呢?
    • 它是夜间 JComboBox 的一部分:nights.setSelectedIndex(4);你知道怎么了?
    • @geek101:Java 数组、列表、索引从 0 开始。因此,如果您将 4 个项目添加到 JComboBox,则允许的索引是 0、1、2 和 3。
    猜你喜欢
    • 2014-12-09
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 2022-01-07
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多