Nakładające się na siebie JListy

0

Mam menu stworzone w taki sposób, że można z niego wybrać daną listę, która zawiera określone dane. Całość jest robiona przez ActionListenera, który pobiera źródło, a następnie wypisuje daną listę. Wszystko działa jak należy poza tym, że... wyświetlana jest tylko jedna początkowa lista. Podejrzewam, że następne się pod nią po prostu nakładają. Ma ktoś pomysł, jak to rozwiązać?

0

Myślę, że starczy jak poprawisz kod.

0

nikt bez kodu nie pomoże Ci bo nie wiemy jak to czynisz w obecnym stanie...

0

Daję kawałek z ActionListenera. Po kliknięciu w dany item z menu przypisywany jest on do Źródła. Jak wygląda aktualnie sytuacja: JListy ładnie się aktualizują i wyświetlają. Problem w tym, jak kliknę na pojedynczy element z JLlista i wyświetlę go w formie JLabeli po prawej stronie ekranu. JLabele i podpisy dla danego elementu z listy wyświetlają się wówczas poprawnie – problem w tym, że jak wówczas ponownie zmienię listę na inną, wtedy wywala już błędy. Ktoś wie, co z tym zrobić? Podejrzewam, że nakładają się na siebie JLabele, ale jak dałem "setVisible(false)" dla każdego poza tym, który powinien być aktualnie wyświetlany, błąd pojawiał się ponownie.


 if (Zrodlo == JMIwyswietlProwadzacych) {

            jlist.setModel(listaP);
            jlist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

            JSprowadzacy.setVisible(true);

            JSprowadzacy.setLeftComponent(new JScrollPane(jlist));
            JPprowadzacy.add(JLBimie);
            JPprowadzacy.add(JLBnazwisko);
            JPprowadzacy.add(JLBindeks);
            JSprowadzacy.setRightComponent(JPprowadzacy);

            jlist.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
                @Override
                public void valueChanged(ListSelectionEvent e) {
                   // wyswietlProwadzacych WP = jlist.getSelectedValue();
                    int item = (int) jlist.getSelectedIndex();
                    JLBimie.setBounds(100,40,150,30);
                    JLBimie.setText("Imię: " + listaP.listaProwadzacych.get(item).getImie());
                    JLBnazwisko.setBounds(100,70,150,30);
                    JLBnazwisko.setText("Nazwisko: " + listaP.listaProwadzacych.get(item).getNazwisko());
                    JLBindeks.setBounds(100,100,150,30);
                    JLBindeks.setText("Indeks: " + listaP.listaProwadzacych.get(item).getId());
                }
            });

            JSsale.setVisible(false);
            JSgrupy.setVisible(false);
            JSzajecia.setVisible(false);
            JFwprowadzDane.add(JSprowadzacy);
            JFwprowadzDane.revalidate();
            JFwprowadzDane.repaint();
        }

        if (Zrodlo == JMIwyswietlSale) {

            jlist.setModel(listaS);
            JSsale.setBounds(30,30, 300, 200);

            JSsale.setVisible(true);

            JSsale.setLeftComponent(new JScrollPane(jlist));
            JPsale.add(JLBbudynek);
            JPsale.add(JLBnumer);
            JSsale.setRightComponent(JPsale);

            jlist.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
                @Override
                public void valueChanged(ListSelectionEvent e) {
                    int item = (int) jlist.getSelectedIndex();
                    JLBbudynek.setBounds(100,40,250,30);
                    JLBbudynek.setText("Przeznaczenie: " + listaS.listaSal.get(item).getBudynek());
                    JLBnumer.setBounds(100,70,250,30);
                    JLBnumer.setText("Numer: " + listaS.listaSal.get(item).getNumer());
                }
            });

            JSprowadzacy.setVisible(false);
            JSgrupy.setVisible(false);
            JSzajecia.setVisible(false);
            JFwprowadzDane.add(JSsale);
            JFwprowadzDane.revalidate();
            JFwprowadzDane.repaint();
        }

Kody błędów:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
	at java.util.ArrayList.elementData(ArrayList.java:418)
	at java.util.ArrayList.get(ArrayList.java:431)
	at com.gui.wprowadzDane$3.valueChanged(wprowadzDane.java:247)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211)
	at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405)
	at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415)
	at javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(DefaultListSelectionModel.java:576)
	at javax.swing.DefaultListSelectionModel.clearSelection(DefaultListSelectionModel.java:420)
	at javax.swing.JList.clearSelection(JList.java:2043)
	at javax.swing.JList.setModel(JList.java:1677)
	at com.gui.wprowadzDane.actionPerformed(wprowadzDane.java:141)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
	at java.awt.Component.processMouseEvent(Component.java:6533)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6298)
	at java.awt.Container.processEvent(Container.java:2236)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2294)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
	at java.awt.Container.dispatchEventImpl(Container.java:2280)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.awt.EventQueue$4.run(EventQueue.java:729)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException
 
0

Zaznacz w kodzie te wiersze

com.gui.wprowadzDane$3.valueChanged(wprowadzDane.java:247) 
com.gui.wprowadzDane.actionPerformed(wprowadzDane.java:141)
0

Te dane to:

  jlist.setModel(listaP);

dla powiadomienia:

 at com.gui.wprowadzDane.actionPerformed(wprowadzDane.java:143)

Oraz

   JLBid.setText("Numer grupy: " + listaG.listaGrup.get(item).getId());

dla powiadomienia

 at com.gui.wprowadzDane$3.valueChanged(wprowadzDane.java:253)

Więc generalnie pojawiają się problemy ze zmianą modelu listy w momencie, jak zostaną wypisane jakieś JLabele wskazujące na dane którejś z listy. Jeśli tego nie zrobię (nic nie wyświetlę na prawo od listy), to mogę po listach bezproblemowo przejeżdżać.

0

Odświeżam. Prosiłbym o pomoc.

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