私のJComboBox
モデルには、item1
,item2
,item1
のような項目が含まれています。私はJComboBox
で3番目の項目(item1
)を選択し、アイテムが、私は違った各項目のインデックスを取得することができますどのように私のモデルで同じである場合、それは常に0JComboBoxアイテムの変更
を返すgetSelectedIndex()
をチェックしたときに私の問題はありますか?同様に:その後、
- ITEM1戻り0
- 項目2に戻り1つの
- ITEM1リターン2
私のJComboBox
モデルには、item1
,item2
,item1
のような項目が含まれています。私はJComboBox
で3番目の項目(item1
)を選択し、アイテムが、私は違った各項目のインデックスを取得することができますどのように私のモデルで同じである場合、それは常に0JComboBoxアイテムの変更
を返すgetSelectedIndex()
をチェックしたときに私の問題はありますか?同様に:その後、
JList
には同一の項目に問題はありません。
import javax.swing.event.*;
import javax.swing.*;
class TestList {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final String[] items = {"item1", "item2", "item1"};
final JList list = new JList(items);
final JTextField output = new JTextField(15);
JPanel gui = new JPanel();
gui.add(list);
gui.add(output);
list.addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent lse) {
int index = list.getSelectedIndex();
String outputText =
"Index: " +
index +
" Value: " +
items[index];
output.setText(outputText);
}
});
JOptionPane.showMessageDialog(null, gui);
}
});
}
}
JComboBox#getSelectedIndex()は文字列combo.getSelectedIndex()を返します。toString +1 – mKorbel
はOPにある可能性があります 'items = {" item1 "、" item2 "、" item1 "};' –
@Andrew:それは私ですユーザーに依頼する。 2つのエントリーをcomboBoxで違うものにするか、同じエントリーを2回追加するのは何ですか? : - \ –
JComboBoxの中に2つのエントリが同じオブジェクトに対応する場合、も、あなたの場合アイテム3をクリックすると、選択された実際のアイテムがそのオブジェクトの最初のエントリになります(つまり、インデックスが最も小さいもの) これは同じオブジェクトに対しては機能しないと思います。
これは、getSelectedIndex()
というメソッドは、JComboBox内のオブジェクトに対して.equals
を使用し、選択したオブジェクトと比較するためです。あなたの場合、item1もインデックス0にあるので、条件trueを見つけて0を返します。異なるインデックスを取得するには、getSelectedIndex()
メソッドをオーバーライドする必要があります。
するJComboBoxのデフォルトgetSelectedIndex()
方法の概要は、Java2sで発見:
public int getSelectedIndex() {
Object sObject = dataModel.getSelectedItem();
int i, c;
Object obj;
for (i = 0, c = dataModel.getSize(); i < c; i++) {
obj = dataModel.getElementAt(i);
if (obj != null && obj.equals(sObject))
return i;
}
return -1;
}
取得するために2つのエントリに異なる何かを[項目オブジェクトは名前や他の何かを持っている場合ITEMNAMEすることができる]している必要があります望ましい結果。 getSelectedIndex()
をオーバーライドし、すべてが異なることを意味するものを比較してください。両方のエントリが完全に同じ場合、それを2回追加する点は何ですか?
iがスロット0とスロット2 – MeBigFatGuy
@MeBigFatGuyを比較した場合、各項目の.equals(オブジェクトo)メソッドは(ITEM1)item1.equalsためfalseを返す必要があります推測している。その理由あなたはそう思う? –
@ user709247、関連コードを投稿してください。あなたはすでに暗闇の中で3人の人間を撮影しましたが、あなたからの心のこもった反応はありません。目を覚ます! – mre