2
我被困在使Java GUI中的兩個下拉菜單形式,選擇第一個將決定在第二個菜單中的選擇。2D JComboBox,其中一個控件與ActionListener的其他項目
希望達成什麼看起來像這樣: enter image description here
我打開我的選擇在comboBox1後,它看起來像這樣: enter image description here
這裏是我的測試代碼:
public static void main(String[] args) {
Tester tester = new Tester();
String[] flower = {"Rose", "Tulip"};
String[] color1 = {"Yellow", "Blue", "Red"};
String[] color2 = {"Purple", "White", "Green"};
for (String flowerPicked : flower) {
tester.comboBox1.addItem(flowerPicked);
}
tester.comboBox1.addActionListener(e -> {
// remove previous items in comboBox2 everytime a new item in box1 is selcted
tester.comboBox2.removeAllItems();
String flowerChoice = tester.comboBox1.getSelectedItem().toString();
if (flowerChoice.equalsIgnoreCase("Rose"))
for (String colorPicked : color1) {
tester.comboBox2.addItem(colorPicked);
}
else
for (String type : color2) {
tester.comboBox2.addItem(type);
}
});
tester.comboBox2.addActionListener(e -> {
String colorChoice = tester.comboBox2.getSelectedItem().toString();
String flowerChoice = tester.comboBox1.getSelectedItem().toString();
system.out.println(colorChoice + " " + flowerChoice);
});
}
但我每次嘗試在comboBox1中切換我的選擇時,都會在removeAllItems()和comboBox2.getSelectedItems()中遇到NullPointerException。
我試圖調試它,但它似乎是因爲comboBox2的actionListener在程序執行removeAllItems()和comboBox2.addItem()時被調用。我不知道如何處理這個問題
有一點幫助嗎?