使用Array数据填充Java ComboBox

时间:2014-07-26 13:28:12

标签: java arrays if-statement combobox while-loop

在我个人学习Java的过程中,我遇到了另一个障碍。

到目前为止,我有2个阵列,第一个是带有摄影胶片制造商列表的一维阵列,第二个是具有以下外观的二维阵列:

Film               Developer    Dilusion   35mm    120    Sheet    Temperature
Kodak T-Max 100,   Ilfosol S,   1+9,       10,     10,    ,        20C
Kodak T-Max 100,   Rodinal RO9, 1+25,      9,      9,     ,        20C
Kodak T-Max 100,   Rodinal RO9, 1+50,      13,     13,    ,        20C

(嗯,不要用上面的时间来开发这些电影,我只是为这个例子输入了任何数据)

在我的JFrame上,我有一个JComboBoxes列表(电影,开发者,稀释,电影格式)。电影盒由1D阵列填充,我有以下代码,试图在选择电影时列出可能的开发人员。目前这个代码导致无限循环需要我的笔记本电脑硬重置,所以肯定是不对的。

private void filmComboBoxActionPerformed(java.awt.event.ActionEvent evt) {                                             
    // TODO add your handling code here:
    developerComboBox.removeAllItems();

    int count = 0;
    while (count <= rows) {
        if (myArray[0][count] == filmComboBox.getSelectedItem()) {
            developerComboBox.addItem(myArray[1][count]);
            count++;
        }
    }
}          

我对这段代码出错的任何建议都非常感激,一旦完成这部分,我将重复使用不同字符串名称的代码等...在选择开发人员时填充稀释字段,然后电影格式字段

干杯 吉姆

2 个答案:

答案 0 :(得分:1)

while (count <= rows) {//Loop until count less than or equal to rows
        if (myArray[0][count] == filmComboBox.getSelectedItem()) {
         //If it Never Satisfied Count won't be incremented
            developerComboBox.addItem(myArray[1][count]);
            count++;//Never Incremented
        }
    }

你计算的变量没有递增,你的循环变为inf count++在if块之外,并使用.equals方法比较Java中的Strings

现在你可以问Why do I compare Strings with equals in java?

答案 1 :(得分:0)

count++放在if块之外!如果if块不为true,count变量将不会递增,并且您将一遍又一遍地重新测试相同的false boolean语句。也不要使用==来比较字符串。请改用equals(...)equalsIgnoreCase(...)方法。理解==检查两个对象是否相同而不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同的字符相同的顺序,这是重要的。而不是

if (fu == "bar") {
  // do something
}

做,

if ("bar".equals(fu)) {
  // do something
}

,或者

if ("bar".equalsIgnoreCase(fu)) {
  // do something
}