przekazywanie danych do Jcombobox z Mysql

Odpowiedz Nowy wątek
2015-02-13 12:06
0

Witam,

Patrzyłem po forum ale nie mogłem znaleźć.

Mam taki problem. Zrobiłem connector w formie Singletona do bazy danych. I teraz tak mam dwie klasy : MainForm i DBConnection. W pierwszej jest uruchamiana aplikacja i tworzony formularz który zawiera mi JCombobox.

W klasie DBConnection mam pod Singletonem coś takiego:

      public void SelectFromSamochody() throws SQLException {

            String sql = "SELECT marka, model FROM samochody";
            statement = db.conn.prepareStatement(sql);
            rs = statement.executeQuery(sql);

            while(rs.next()){
                String marka = rs.getString("marka");

                cmbauto.addItem(marka);
            }

      }}

cmbauto to nazwa Jcomboboxa z MainForm. Jak mogę przekazać to co pobieram z bazy do tego Combobox-a?

Bo chyba nie bardzo wiem jak to zrobić.

edytowany 1x, ostatnio: bogdans, 2015-02-13 14:02
!Wstawiaj kod w znaczniki "kolorujące" <code=java></code> - bogdans 2015-02-13 14:03

Pozostało 580 znaków

2015-02-13 13:21
0

Możesz skorzystać z modelu dla ComboBoxa:
http://www.java2s.com/Tutoria[...]mboBoxUsingtheCustomModel.htm

Ja w swoim projekcie zrobiłem to tak:
https://github.com/DanielMichalski/contacts-group

Pozostało 580 znaków

2015-03-02 14:29
0

Zrobiłem to trochę inaczej. Robię to na MVC i teraz w Artopcje.java(plik zawiera mi opcję):


    public List<Artykul> getArtykul() throws SQLException {

        List<Artykul> news = new ArrayList<Artykul>();

        Connection conn = Database.getInstance().getConnection();

        String sql = "select id, title, article from news order by id";
        Statement p = conn.createStatement();

        ResultSet results = p.executeQuery(sql);

        while(results.next()) {                                     // pętla wyciągająca kolejne elementy z tabeli 
            int id = results.getInt("id");
            String title = results.getString("title");
            String article = results.getString("article");

            Artykul artykul = new Artykul(id, title, article);              // tworzenie nowego wiersza

            news.add(artykul);
        }
        results.close();
        p.close();

        return news;
    }

a w View chcę wywołać to co wychodzi do Jcombo. W sumie wystarczyło by mi żeby pobierał sam tytuł a po jego wybraniu chcę otwierać nowe okno z treścią:

private JComboBox<ArtOpcje> combo = new  new JComboBox<ArtOpcje>();
private ArtOpcje l = new ArtOpcje();

combo.setBounds(130, 250, 300, 30);
combo.addItem(l);
this.add(combo);

Pewnie coś popierniczyłem lub coś źle rozumiem. z góry dziękuję

Pozostało 580 znaków

2015-03-02 18:29
0
for (Artykul el : articles) {
        combobox.addItem(el.getTitle());
}

Pozostało 580 znaków

2015-03-02 19:47
0

a w którym miejscu to mam dać?

Pozostało 580 znaków

2015-03-02 20:00
0

To tylko "szkielet" co należy zrobić. Nie wiem czy CB ma dynamicznie zmieniać model czy tylko raz. Jeżeli raz to pobierz z bazy listę Artykułów i zaraz po utworzeniu CB dodaj itemy. Jeżeli dynamicznie to musisz napisać prostą metodę, która będzie usuwała wszystkie elementy(removeAllItem), a następnie nową listę załadować do modelu

Pozostało 580 znaków

2015-03-03 14:28
0

To jeszcze jedno pytanie. Tak jak mam na chwilę obecną wyświetlam mi się w combo coś takiego :

[email protected]

model u mnie to package w którym znajduję się plik artOpcje. A powinien się chyba wyświetlać pierwszy wiersz z tabeli.

Pozostało 580 znaków

2015-03-03 16:06
0

Bo w modelu masz obiekt. Zwykle w modelu CB trzyma się Stringi lub enumy.

  1. Albo wyciągniesz z obiektu to co Cię interesuje, np tak jak podałem Ci wyżej.(DB -> List<artykul> -> pojedynczy Artykul -> tytuł Artykul)
  2. Albo nadpisz metodę toString w klasie ArtOpcje.

Pozostało 580 znaków

2015-03-04 23:04
0

Dobrze myślę?


public JComboBox<String> Combofill() {

        JComboBox<String> combo = new JComboBox<String>();

        ArrayList<Artykul> article = getArtykul();

        for(Artykul el : article){
            combo.addItem(el.getTitle());
        }

        return combo;
    }
Moze byc - garai 2015-03-05 02:47

Pozostało 580 znaków

2015-03-05 14:53
0

Zrobiłem debug. I pobierany jest tylko model. To co wyżej pisałem. Czyli model.ArtOpcje. jak patrzę głębiej w news to news jest pusty.

W Modelu mam napisane tak:


public class Model {

    private Set<Artykul> news = new HashSet<Artykul>();

    public ArrayList<Artykul> getArtykul(){

        return new ArrayList<Artykul>(news);
    }

    public JComboBox<String> Combofill() {

        JComboBox<String> combo = new JComboBox<String>();

        ArrayList<Artykul> article = getArtykul();

        for(Artykul el : article){
            combo.addItem(el.getTitle());
        }

        return combo;
    }

}
edytowany 2x, ostatnio: miedziopl, 2015-03-05 14:54

Pozostało 580 znaków

2015-03-05 16:21
0

A gdzie masz dane z DB? W tym momencie Twój model jest pusty. Przecież w trzecim poście masz metodę do pobierania danych z DB to po co piszesz nową?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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