2012-06-28 2 views
0

Я пытаюсь создать гадалку, которая позволяет вам выбрать цвет из одного JCombobox, затем позволяет выбрать номер из другого JCombobox в соответствии с тем, какой цвет вы выбрали. Например, если я выбираю «Красный» или «Желтый», то отображается этот набор из # - {1,3,4,7}. Однако, если я выбираю «Синий» или «Зеленый», отображается этот набор из # - {2,6,8,5}. Как только число выбрано, я хотел бы отобразить состояние из «массива удачи», привязанного к этому номеру в строке состояния (JLabel) в нижней части экрана. Это мой код до сих пор: -Как вы позволяете JLabel отображать значение из массива, когда элемент выбран из JComboBox?

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

    } 
} 

, если он работает, отметьте его как правильный ответ

Смежные вопросы