我正在尝试创建一个算命先生,让您从一个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);
}
}
答案 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]);
}
}
}
如果有效则将其标记为正确答案