Merhabalar,

JComboBox'ın içeriğini aşağıdaki gibi DefaultComboBoxModel ile dolduruyorum.

    public static DefaultComboBoxModel<UlkeDm> ulkeListesi() {
    DefaultComboBoxModel<UlkeDm> ulkeListesi = new DefaultComboBoxModel<UlkeDm>();
    try {
        Statement stmt = baglan.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT id, adi FROM ulke");
        while (rs.next()) {
            UlkeDm ulkeDm = new UlkeDm();

            ulkeDm.setId(rs.getString("id"));
            ulkeDm.setAdi(rs.getString("adi"));

            ulkeListesi.addElement(ulkeDm);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return ulkeListesi;
}

Yapmak istediğim işlem seçim yaptırmak, mesela id=3 adi="USA" olanı seçmek istiyorum.

setSelectedItem() metodu ile yeni bir nesne oluşturup yapmaya çalıştım olmadı.

    UlkeDm dm = new UlkeDm();
    dm.setId("3");
    dm.setAdi("USA");

    ulkeBox.setSelectedItem(dm);

Bu şekilde çalıştıramadım. Hatayı nerde yapıyorum DefaultComboBoxModel kullanmamalı mıyım farklı bir yöntem mi kullanmalıyım?

Herhangi bir şekilde içeriği doldurulmuş bir JComboBox'ta seçim yaptırmak istiyorum. Nasıl yapabilirim?

soruldu: 26 Ağu '12, 23:09

x2tr's gravatar image

x2tr
415101622
cevap kabul oranı: 11%

değiştirildi: 27 Ağu '12, 04:58

CemIkta's gravatar image

CemIkta ♦
19.9k29125190


UlkeDM sanirim model, ben test icin asagidaki gibi bir Ulke POJO class olusturdum, hashCode(), equals(), toString() metodlarini yazdim. Sonra da DefaultComboBoxModel listesine ekledim ve istedigim ulke seciliyor. Eger sececeginiz ulkenin index'ini biliyorsaniz cbUlke.setSelectedIndex(2) daha kolay.


package testswing;

import java.util.Objects;

/**
 * ComboBox ulke model
 *
 * @author cem ikta
 */
public class Ulke {

private int id;
    private String adi;

public Ulke(int id, String name) {
        this.id = id;
        this.adi = name;
    }

public int getId() {
        return id;
    }

public void setId(int id) {
        this.id = id;
    }

public String getAdi() {
        return adi;
    }

public void setAdi(String adi) {
        this.adi = adi;
    }

@Override
    public int hashCode() {
        int hash = 7;
        return hash;
    }

@Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Ulke other = (Ulke) obj;
        if (this.id != other.id) {
            return false;
        }
        if (!Objects.equals(this.adi, other.adi)) {
            return false;
        }
        return true;
    }

@Override
    public String toString() {
        return id + ", " + adi;
    }
}

// JFrame uzerindeki test ComboBox kodlari
// create JFrame ve create ComboBox kodlari alinmadi !!!

DefaultComboBoxModel<ulke> ulkeListesi = new DefaultComboBoxModel<ulke>();

Ulke ulke1 = new Ulke(1, "Turkiye");
    Ulke ulke2 = new Ulke(2, "Almanya");
    Ulke ulke3 = new Ulke(3, "Ingiltere");

ulkeListesi.addElement(ulke1);
    ulkeListesi.addElement(ulke2);
    ulkeListesi.addElement(ulke3);

cbUlke.setModel(ulkeListesi);

// ulke4 ile secilecek ulke verilir. 
    // Ulke isimleri DefaultComboBoxModel icindekilerle ayni olmali
    Ulke ulke4 = new Ulke(1, "Turkiye");
    // Turkiye secilir.    
    cbUlke.setSelectedItem(ulke4);


Detayli kullanim ve ornek kodlar icin Swing Tutorials faydali olabilir.

How to Use Combo Boxes

permanent link

cevaplandı: 27 Ağu '12, 05:38

CemIkta's gravatar image

CemIkta ♦
19.9k29125190
cevap kabul oranı: 36%

değiştirildi: 27 Ağu '12, 05:41

Hatamı buldum hocam, çok teşekkür ediyorum. Pojo da equals() metodunu kullanmıyordum. Sorun ondan kaynaklanıyormuş. Daha önce hiç kullanmamıştım :) Tekrar teşekkür ederim.

(27 Ağu '12, 11:15) x2tr x2tr's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,077
×79
×3

Soruldu: 26 Ağu '12, 23:09

Görüntüleme: 1,100 kez

Son güncelleme: 27 Ağu '12, 11:15

powered by BitNami OSQA