Я пытаюсь создать гадалку, которая позволяет вам выбрать цвет из одного 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);
}
}
Смотрите также это [Q & A] (http://stackoverflow.com/q/3191837/230513) , – trashgod
, так что если я правильно понял, что вы хотите сделать, зависит от того, что выбрано из комбинированных полей, которые вы хотите установить для текста метки в один из элементов массива состояний? – Michael
Что работает? Что нет? Что делает программа до сих пор? – Puce