組選定項目的原始代碼:JComboBox setSelectedItem錯誤或功能?
public void setSelectedItem(Object anObject) {
Object oldSelection = selectedItemReminder;
Object objectToSelect = anObject;
if (oldSelection == null || !oldSelection.equals(anObject)) {
if (anObject != null && !isEditable()) {
// For non editable combo boxes, an invalid selection
// will be rejected.
boolean found = false;
for (int i = 0; i < dataModel.getSize(); i++) {
E element = dataModel.getElementAt(i);
if (anObject.equals(element)) {
found = true;
objectToSelect = element;
break;
}
}
if (!found) {
return;
}
}
在我看來
行
if (anObject.equals(element)) {
應該
if (element.equals(anObject)) {
考慮一個組合框,顯示如。語言 那麼你甲肝喜歡
class Language {
String code; // eg. "en"
String name; // eg. "English"
...
}
一類,如果添加語言項目的ComboBox中的toString功能是用來顯示一個項目。在上面的類中,toString函數將返回名稱。呼叫setSelectedItem( 「EN」)失敗,因爲
String.equals(語言)將失敗,因爲Language.toString()將返回 「英語」
倒過來Language.equals(字符串)將幫助因爲類語言可以覆蓋
boolean equals(String comp) {
return comp.equals(code)
}
只是爲了澄清,我知道如何創建一個組合框與所期望的行爲,我的問題是:是在原代碼的比較中的錯誤還是我錯過的東西根本?