Wstawienie listy do JcomboBox

2015-02-24 08:47
0

Zerknijcie na ponizszy kod czy cos pominalem ?

listaWyboruCwiczenZmienna = new DefaultListModel();          
listaWyboruCwiczenGlowna = new JList(listaWyboruCwiczenZmienna);  //tu jest wszystko ok listy sie tworza i wypełniaja odpowiednimi danymi

JComboBox comboBoxCwiczenie1 = new JComboBox();
comboBoxCwiczenie1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) 
{
for (int i=0;i<listaWyboruCwiczenZmienna.size();i++)
{
comboBoxCwiczenie1.addItem(listaWyboruCwiczenZmienna.get(i)); // problem jest tu nie dodaje mi tego co jest w listaWyboruCwiczenZmienna
}
}
});
edytowany 1x, ostatnio: furious programming, 2015-02-24 18:02

Pozostało 580 znaków

2015-02-24 09:33
0

Jak rozpoznałeś, że się nie dodało? Wyświetliłeś sobie gdzieś nowa zawartość JComboBoksa? W kodzie brakuje repaint().


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2015-02-24 13:33
1

Jesteś pewien, że ładowanie itemów do CB ma być na event tego samego CB a nie w jakiejś metodzie/konstruktorze gdzie tworzysz CB?

Pozostało 580 znaków

2015-02-24 14:08
0

Tak błędem było to że wrzucałem to w ActionListenera, wystarczył zwykły for. Ale mam kolejny problem nie wiem jak odświeżyć JComboBoxy przy zmianie paneli.
Konkretnie chodzi o to, że mam dwa panele:
PanelPrzebieguCwiczen - mam tam 8xcombobox
PanelEdycjiCwiczen - tam aktualizuje listeWyboruCwiczenZmienna
Próbuje coś takiego ale nie działa. Myslalem, że jak wyrzuce stare dane a przy zmianie panela wrzuce juz nowe bedzie działać ale to nie tak chyba powinno sie robic.


try {

            getContentPane().remove(PanelEdycjiCwiczen);
            getContentPane().add(PanelPrzebieguCwiczen);
            pack();
            validate();
            repaint();  

            for (int i=0;i<listaWyboruCwiczenZmienna.size();i++)
            {   

                comboBoxCwiczenie1.remove(i);
                comboBoxCwiczenie2.remove(i);
                comboBoxCwiczenie3.remove(i);
                comboBoxCwiczenie4.remove(i);
                comboBoxCwiczenie5.remove(i);
                comboBoxCwiczenie6.remove(i);
                comboBoxCwiczenie7.remove(i);
                comboBoxCwiczenie8.remove(i);

            }
             for (int i=0;i<listaWyboruCwiczenZmienna.size();i++)
                    {   

                        comboBoxCwiczenie1.addItem(listaWyboruCwiczenZmienna.get(i));
                        comboBoxCwiczenie2.addItem(listaWyboruCwiczenZmienna.get(i));
                        comboBoxCwiczenie3.addItem(listaWyboruCwiczenZmienna.get(i));
                        comboBoxCwiczenie4.addItem(listaWyboruCwiczenZmienna.get(i));
                        comboBoxCwiczenie5.addItem(listaWyboruCwiczenZmienna.get(i));
                        comboBoxCwiczenie6.addItem(listaWyboruCwiczenZmienna.get(i));
                        comboBoxCwiczenie7.addItem(listaWyboruCwiczenZmienna.get(i));
                        comboBoxCwiczenie8.addItem(listaWyboruCwiczenZmienna.get(i));

                    }

            }catch (NullPointerException ex){}

Pozostało 580 znaków

2015-02-24 14:41
0
  1. NPEx się nie łapie :)
  2. Jak chcesz usunąć wszystkie elementy z modelu to zawołaj na CB removeAllItems
  3. Podmieniasz panele, a czy one czasem nie mają swoich oddzielnych CB? Nie bardzo rozumiem
edytowany 1x, ostatnio: garai, 2015-02-24 14:41

Pozostało 580 znaków

2015-02-24 14:50
0

OK muszę jeszcze troche o wyjątkach poczytać. Jezeli masz jakies szybkie rady dotyczace różnych wyjatkow np ktorych sie nie łapie :) chętnie poczytam.

Pozostało 580 znaków

2015-02-24 17:07
0

Pierwszy panel gdzie sa comboboxy :

panelwykcwicznie.JPG

Drugi panel gdzie edytuje liste z ktorej comboboxy ciagnął dane (dodaj, usuwam itp):

paneldodajcw.JPG

Moj problem polega na tym,że przy zmianie paneli DRUGI na PIERWSZY - comboboxy pozostaja w stanie takim jakie były przy uruchomieniu programu. Nie wiem jak zrobic żeby przy zmianie ciagneły dane z nowej listy zmodyfikowanej w panelu edycji. Lista jest zapsiywane w pliku.

Przyciski z czerwonymi ikonkami są bardzo złe... To grafiki JPG..? - furious programming 2015-02-24 18:03

Pozostało 580 znaków

2015-02-24 17:22
0

Ale w czym problem?

  1. Weź aktualną listę
  2. Wyrzuć wszystko z CB
  3. Załaduj nowe itemy do CB
  4. Usuń panel aktualny
  5. Pokaż poprzedni panel

Nawiasem mówiąc przy podmianie paneli często pomocny jest CardLayout

Pozostało 580 znaków

2015-02-24 17:41
0

No właśnie tak powinno się dziac ale niestety

Przechwytywanie.JPG

Po pierwsze przy naciśnięciu przycisku jezeli nie mam try-catch wywala mi

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at program.GlownaRamka$5.actionPerformed(GlownaRamka.java:355)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Po drugie taki kod nie wystarczy żeby usunąć wszystko z combo zostaja dalej stare dane (sprawdzam wartosc listy sie zmienia). Moze to wszytko trzeba jescze jakos odswiezyc.

Pozostało 580 znaków

2015-02-24 17:47
0

eeeeeeee... comboBoxCwiczenie2 jest nullem. Nie inicjalizujesz tego pola

edytowany 1x, ostatnio: garai, 2015-02-24 17:53

Pozostało 580 znaków

2015-02-24 18:50
0

ok wiec jak zainicjowac. Co nalezy wstawic w konstruktorze żeby JComboBox nie był null ?


JComboBox comboBoxCwiczenie2 = new JComboBox();
dokładnie tak - garai 2015-02-24 18:52

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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