2012-06-28 34 views
0

我想创建一个算命器,让你从一个JCombobox中选择一种颜色,然后让你根据你选择的颜色从另一个JCombobox中选择一个数字。例如,如果我选择“红色”或“黄色”,则显示这组#号 - {1,3,4,7}。但是,如果我选择“蓝色”或“绿色”,则显示这组#号 - {2,6,8,5}。一旦选择了一个数字,我希望在屏幕底部的状态栏(JLabel)上显示与该数字关联的“财富数组”的财富。这是到目前为止我的代码: -如何从JComboBox中选择项目时让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); 
    } 
} 
+1

参见本[Q&A](http://stackoverflow.com/q/3191837/230513) 。 – trashgod

+0

所以如果我理解正确,你想要做什么取决于从组合框中选择什么,你想将标签的文本设置为财富数组中的一个项目? – Michael

+0

什么工作?什么不?该计划到目前为止做了什么? – Puce

回答

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 
} 

变化,根据自己的喜好的代码,但是这本身是不言自明

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]); 
      } 

    } 
} 

,如果它的工作原理打勾为正确答案

相关问题