Jak wczytać dane z bazy do pola jComboBox ?

0

Witam wszystkich :) (pierwszy post na tym forum)

Mam problem z wczytaniem pól do jComboBox, chodzi mi o to by móc wczytać "id" i "nazwe wyświetlaną". Jak wczytam same nazwy pól wyświetlanych to będą ponumerowane po kolei od zera (przez xxx.getSelectedIndex() ).

Znalazłęm wstępne rozwiązanie http://www.coderanch.com/t/342430/GUI/java/Same-value-JComboBox ale mam dalej problem z tworzeniem obiektów w tablicy.

 
public class Vendor
{
  String vendorName;
  String vendorID;
  public Vendor(String vn, String vi){vendorName = vn; vendorID = vi;}
  public String toString(){return vendorName;}
} 
 
Vendor[] xxx;

    private void DajDane(){
        String sql = "SELECT * FROM kategorie";
        Baza baza = new Baza();
        ArrayList<HashMap<String,String>> wynik = baza.queryToArray(sql);
        HashMap<String,String> wiersz;

        int ile = wynik.size();
        this.xxx = new Vendor[ile];

        for(int i = 0; i < wynik.size(); i++){
            wiersz = wynik.get(i);
            xxx[i] = new Vendor(wiersz.get("kategoria"), wiersz.get("id"));
        }
        
    }

private javax.swing.JComboBox jComboBox1 = new javax.swing.JComboBox(xxx);

 

I po odpaleniu:

run:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.DefaultComboBoxModel.<init>(DefaultComboBoxModel.java:53)
at javax.swing.JComboBox.<init>(JComboBox.java:175)
at komis.DodajKategorie.initComponents(DodajKategorie.java:116)
at komis.DodajKategorie.<init>(DodajKategorie.java:30)
at komis.MainKomis.jMenuItemKategorieActionPerformed(MainKomis.java:145)
at komis.MainKomis.access$400(MainKomis.java:18)
at komis.MainKomis$5.actionPerformed(MainKomis.java:85)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

A więc kto pomoże ?:)

1

Z komunikatu wynika, że błąd jest w klasie DodajKategorie, a kodu tej klasy nie wkleiłeś. Zapewne tworzysz JComboBox przekazując do konstruktora niezainicjownay obiekt xxx. Ale to tylko zgadywanka, pokaż kod.

0

Niebywałe :D Wystarczyło przestawić w konstruktorze kolejności odpalania metod:

tak było źle:

public DodajKategorie() {
  initComponents();       
  DajDane();
}

a tak wszytko chula :):

 public DodajKategorie() {
        DajDane();
        initComponents();
        
    }

wielkie dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1