2012-06-28 37 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]); 
      } 

    } 
} 

,如果它的工作原理打勾爲正確答案

相關問題