alt text

resimde göründüğü gibi ülkerin bulunduğu bir JComboBox ile şehirlerin bulunduğu bir JComboBox mevcut. Yapmak istediğim Ükle Seçildiğinde o ülkenin şehirleri listelensin. veritabanında ülkeler ve şehirler mevcut. ülkeye göre şehirleri veritabanından çekip java.util.List atıyorum. Yapmak istediğim ülke değiştiğinde veritabanına gidip seçilen ülkenin şehirlerini seçip şehir JComboBox'a atamak.

Veritanından seçilen ülkeye göre şehirlerin listesini oluşturuyorum.

UkleDm ulke = (UlkeDm) ulkeBox.getSelectedItem(); sehirBox = new JComboBox(ilDao.ilListesi(ulke.getAdi()).toArray());

şeklinde ilk atamayı yapabiliyorum. Ülke değiştiğinde sehirBox'a yeni listeyi atayamıyorum.

Teşekkür ederim.

soruldu: 23 Haz '12, 08:11

x2tr's gravatar image

x2tr
415101622
cevap kabul oranı: 11%


Ulke combobox'ina action listener ekleyip her selected index degistiginde secilmis ulkeye gore sehir listesini sehir combobox'ina atamaniz gerekiyor. Ben kucuk bir ornek yazdim:

alt text

import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.*;

/* * combobox demo * @author cem ikta / public class Form extends JFrame {

JPanel comboPanel;
JComboBox cbCountry;
JComboBox cbCity;

public Form() {
    initUI();
    setSize(new Dimension(400, 400));
}

/**
 * init ui islemleri
 */
private void initUI() {
    setLayout(new BorderLayout());
    comboPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));

    JLabel lblCountry = new JLabel("Ulke:");
    cbCountry = new JComboBox();
    // TODO ulkeler aslinda db den alinacak, demo icin static verildi.
    cbCountry.addItem("Turkey - TR");
    cbCountry.addItem("England - GB");
    cbCountry.addItem("Germany - DE");
    // select default turkey 
    cbCountry.setSelectedIndex(0);
    cbCountry.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (cbCountry.getSelectedIndex() != -1) {
                System.out.println("index changed");

                DefaultComboBoxModel cm = new DefaultComboBoxModel(getCityList().toArray());
                cbCity.setModel(cm);

                // veya string olarak eklenebilir.                    
                // cbCity.removeAllItems();
                // for (Iterator it = getCityList().iterator(); it.hasNext();) {
                //      String city = (String) it.next();
                //      cbCity.addItem(city);
                // }
            } 
        }
    });

    JLabel lblCity = new JLabel("Sehir:");
    cbCity = new JComboBox(getCityList().toArray());

    comboPanel.add(lblCountry);
    comboPanel.add(cbCountry);
    comboPanel.add(lblCity);
    comboPanel.add(cbCity);

    add(comboPanel, BorderLayout.CENTER);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    pack();
}

/**
 * TODO Normalde burasi db den okunmali! Demo icin static verildi.
 *
 * @return city list
 */
private ArrayList<String> getCityList() {
    System.out.println("Secilmis ulke: " + 
            cbCountry.getSelectedItem().toString());

    ArrayList<String> cityList = new ArrayList<String>();

    if (cbCountry.getSelectedItem() == "Turkey - TR") {
        cityList.add("Adana");
        cityList.add("Mersin");
        cityList.add("Istanbul");

    } else if (cbCountry.getSelectedItem() == "England - GB") {
        cityList.add("London");
        cityList.add("York");
        cityList.add("Manchester");

    } else { // germany sehirleri
        cityList.add("Essen");
        cityList.add("Dortmund");
        cityList.add("Berlin");
    }

    return cityList;
}

}

public class Main {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    new Form().setVisible(true);
}

}

permanent link

cevaplandı: 23 Haz '12, 11:13

CemIkta's gravatar image

CemIkta ♦
19.9k29125190
cevap kabul oranı: 36%

Teşekkür ederim hocam.

(23 Haz '12, 14:53) 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,079
×3

Soruldu: 23 Haz '12, 08:11

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

Son güncelleme: 23 Haz '12, 14:53

powered by BitNami OSQA