我是非常基礎的Java學生。我們完成了一項任務,根據使用幾個if語句選擇的單選按鈕來改變背景顏色。這工作得很好。我決定將選擇過程更改爲組合框並使用開關盒。在我看來,這個過程在switch case方法中if語句失敗。我試圖更好地理解事情的工作方式。代碼:Java開關盒未按預期運行
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class Lab17_4combo extends JFrame implements ActionListener
{
Container container;
JComboBox colors;
public Lab17_4combo()
{
super("ComboBox ");
container = this.getContentPane();
container.setLayout(new FlowLayout());
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String[] selectColor = {"Red", "Yellow", "Blue", "Green", "Magenta"};
JComboBox colors = new JComboBox(selectColor);
colors.setSelectedIndex(-1);
colors.addActionListener(this);
container.add(colors);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
int chgColor;
if(e.getSource() == colors)
{
chgColor = colors.getSelectedIndex();
switch(chgColor)
{
case 0:
container.setBackground(Color.red);
case 1:
container.setBackground(Color.yellow);
case 2:
container.setBackground(Color.blue);
case 3:
container.setBackground(Color.green);
case 4:
container.setBackground(Color.magenta);
}
}else
{
container.setBackground(Color.magenta);
}
}
public static void main(String[] args)
{
Lab17_4combo s = new Lab17_4combo();
}
}
我把其他的東西,以檢查它是否失敗的if。我假設這是問題所在,但我不知道如何解決問題。任何幫助將不勝感激。原來的任務已經完成,這是我自己的實驗。我不是要求任何人爲我做作業。乾杯
編輯 - 我已經對代碼建議的更改(感謝所有的建議)。無論我從組合框中進行選擇,容器的背景顏色都不會改變。我假設代碼中有其他地方存在錯誤,但我無法找到它們。我的期望是容器的背景顏色會根據我從組合框中所做的選擇而改變。這沒有發生。
修改後的代碼:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class Lab17_4combo extends JFrame implements ActionListener
{
Container container;
JComboBox colors;
public Lab17_4combo()
{
super("ComboBox ");
container = this.getContentPane();
container.setLayout(new FlowLayout());
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String[] selectColor = {"Red", "Yellow", "Blue", "Green", "Magenta"};
JComboBox colors = new JComboBox(selectColor);
colors.setSelectedIndex(-1);
colors.addActionListener(this);
container.add(colors);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
int chgColor;
if(e.getSource() == colors)
{
chgColor = colors.getSelectedIndex();
switch(chgColor)
{
case 0:
container.setBackground(Color.red);
break;
case 1:
container.setBackground(Color.yellow);
break;
case 2:
container.setBackground(Color.blue);
break;
case 3:
container.setBackground(Color.green);
break;
case 4:
container.setBackground(Color.magenta);
break;
}
}
}
public static void main(String[] args)
{
Lab17_4combo s = new Lab17_4combo();
}
}
用我有限的Java方面的知識,我無法看到的錯誤(或多個)的可能。任何幫助將是appreciated.Cheers
你忘了'之開關語句中的每個'case'之後添加'break'的意見。 – Prateek
@Spud:退房http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –
謝謝大家。我已在每個案例陳述後添加了中斷,但背景顏色仍未更改。代碼中的其他位置有錯誤嗎? – Spud