当从JComboBox中选择项目时,如何让JLabel显示数组中的值?

时间:2012-06-28 19:24:29

标签: java swing user-interface jcombobox itemlistener

我正在尝试创建一个算命先生,让您从一个JCombobox中选择一种颜色然后让您根据您选择的颜色从另一个JCombobox中选择一个数字。例如,如果我选择“红色”或“黄色”,则会显示这组# - {1,3,4,7}。但是,如果我选择“蓝色”或“绿色”,则会显示这组# - {2,6,8,5}。一旦选择了一个数字,我想在屏幕底部的状态栏(JLabel)上显示与“财富数组”相关联的财富。到目前为止,这是我的代码: -

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class Example2 extends JFrame implements ItemListener {


    private JComboBox maincombobox;
    private JComboBox subcombobox;
    private JLabel labels;

    public Example2(){
        String[] items = {"Select a Color","Red","Blue","Yellow","Green"};
        maincombobox =  new JComboBox(items);
        maincombobox.addItemListener(this);

        getContentPane().add(maincombobox);

        subcombobox = new JComboBox();
        subcombobox.addItemListener(this);      
        subcombobox.setEnabled(true);
        subcombobox.setPrototypeDisplayValue("XXXXXXXXXXXXX");
        getContentPane().add(subcombobox,BorderLayout.EAST);

        labels =  new JLabel("Default");
        getContentPane().add(labels, BorderLayout.SOUTH);


             }
    public void itemStateChanged(ItemEvent e) {
        String[] subitems1 = {"Choose a number","1","3","4","7"};
        String[] subitems2= {"Choose a number","2","6","8","5"};

        String[] fortune = {"Today is you lucky day", "You will get strange looks from people", "Don't touch your left foot today", 
                "You will forget a crucial thing today", "You will meet a mysterious person", "Will win a million dollars", 
                "Good day in the financial market", "Get a life","Think hard, you will find the answer"};


        if (e.getSource() == maincombobox) {

            if (maincombobox.getSelectedItem().equals("Select a Color")) {
               subcombobox.setEnabled(false);
            }    
            else if (maincombobox.getSelectedItem().equals("Red") ||
                maincombobox.getSelectedItem().equals("Yellow") ){

                subcombobox.setEnabled(true);
                subcombobox.removeAllItems();
                for (int i = 0; i < subitems1.length; i++) {
                    subcombobox.addItem(subitems1[i]);
                }

            }

            else if (maincombobox.getSelectedItem().equals("Blue") ||
                maincombobox.getSelectedItem().equals("Green") ){


                subcombobox.setEnabled(true);
                subcombobox.removeAllItems();
                for (int i = 0; i < subitems2.length; i++) {
                    subcombobox.addItem(subitems2[i]);
                }

            }
        }

    }

    public static void main(String[] args){
        JFrame frame = new Example2();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,200);
        frame.setVisible(true);
        frame.setLocationRelativeTo(null); 
    }
}

2 个答案:

答案 0 :(得分:0)

添加以下代码:

if(e.getSource()==subcombobox){
    int choice=Integer.parseInt(subcombobox.getSelectedItem());
    //here the selected number gets stored into the int variable choice
    labels.setText(fortune[choice]);
    //here the text for "labels" is set from your fortune string array
}

根据您的喜好更改代码,但这本身就是不言自明的

答案 1 :(得分:0)

我写完逻辑完全检查了这个

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class Example2 extends JFrame implements ItemListener {

private JComboBox maincombobox;
private JComboBox subcombobox;
private JLabel labels;

public Example2(){
    String[] items = {"Select a Color","Red","Blue","Yellow","Green"};
    maincombobox =  new JComboBox(items);
    maincombobox.addItemListener(this);

    getContentPane().add(maincombobox);

    subcombobox = new JComboBox();
    subcombobox.addItemListener(this);      
    subcombobox.setEnabled(true);
    subcombobox.setPrototypeDisplayValue("XXXXXXXXXXXXX");
    getContentPane().add(subcombobox,BorderLayout.EAST);

    labels =  new JLabel("Default");
    getContentPane().add(labels, BorderLayout.SOUTH);


         }
public void itemStateChanged(ItemEvent e) {
    String[] subitems1 = {"Choose a number","1","3","4","7"};
    String[] subitems2= {"Choose a number","2","6","8","5"};

    String[] fortune = {"Today is you lucky day", "You will get strange looks from people", "Don't touch your left foot today", 
            "You will forget a crucial thing today", "You will meet a mysterious person", "Will win a million dollars", 
            "Good day in the financial market", "Get a life","Think hard, you will find the answer"};

    if (e.getSource() == maincombobox)
    {

        if (maincombobox.getSelectedItem().equals("Select a Color"))
        {
            subcombobox.setEnabled(false);
        }
        else if (maincombobox.getSelectedItem().equals("Red") || maincombobox.getSelectedItem().equals("Yellow"))
        {

            subcombobox.setEnabled(true);
            subcombobox.removeAllItems();
            for (int i = 0; i < subitems1.length; i++)
            {
                subcombobox.addItem(subitems1[i]);

            }

        }

        else if (maincombobox.getSelectedItem().equals("Blue") || maincombobox.getSelectedItem().equals("Green"))
        {

            subcombobox.setEnabled(true);
            subcombobox.removeAllItems();
            for (int i = 0; i < subitems2.length; i++)
            {
                subcombobox.addItem(subitems2[i]);

            }
        }

    }


    else if (subcombobox.getItemCount()>0)
    {
        for(int i=0;i<8;i++)
        {
                if (subcombobox.getSelectedItem().equals(Integer.toString(i)))
                {
                    labels.setText(fortune[i]);
                }

        }
    }

}

public static void main(String[] args){
    JFrame frame = new Example2();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(300,200);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null); 
}

}

我刚刚在底部添加了代码

else if (subcombobox.getItemCount()>0)
{
    for(int i=0;i<8;i++)
    {
            if (subcombobox.getSelectedItem().equals(Integer.toString(i)))
            {
                labels.setText(fortune[i]);
            }

    }
}

如果有效则将其标记为正确答案