Zmiana paneli w kontenerze frame

Odpowiedz Nowy wątek
2012-12-04 13:24

Rejestracja: 11 lat temu

Ostatnio: 5 lat temu

0

Witam
Mam następujący problem: w kontenerze typu frame chciałbym podmieniać 2 panele. Do każdego panelu są dodane inne komponenty, każdy jest tworzony oddzielnie. Obecnie staram się to zrobić za pomocą comboBoxa przez wybranie odpowiedniego pola i obsłużenie tego w ActionListenerze. Widziałem podobny problem w innym wątku i zrobiłem to następująco:

    private void changePanels()
    {
        if (floorChoice == 0)
        {
            this.getContentPane().remove(mainPanel2);
            this.getContentPane().add(mainPanel);
        }
        if (floorChoice == 1) 
        {
            this.getContentPane().remove(mainPanel);
            this.getContentPane().add(mainPanel2);
        }
    }

Metoda znajduje się w klasie dziedziczącej z JFrame. Jednak po wyborze innego pola w comboBoxie nic się nie dzieje. Tzn. panel staje się nieaktywny (jego komponenty są nieaktywne). Prosiłbym o jakąś sugestię co może być nie tak.

edytowany 2x, ostatnio: Louis EX, 2012-12-04 13:25

Pozostało 580 znaków

2012-12-04 13:43
Moderator

Rejestracja: 11 lat temu

Ostatnio: 1 rok temu

Po podmianie panelu dopdaj jeszcze

validate();
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

2012-12-07 08:19

Rejestracja: 10 lat temu

Ostatnio: 5 lat temu

0

Uczymy się czytaj dokumentacje do JDK. Prosto z javadoców awt.Container:

#add(...)
Note: If a component has been added to a container that has been displayed, validate must be called on that container to display the new component. If multiple components are being added, you can improve efficiency by calling validate only once, after all the components have been added.

Do I need to add something more ??


www.toptraker.pl
TopTraker! - I wiesz co jest grane!
Mój własny projekt w Javie - najnowsza wersja już jest!

Pozostało 580 znaków

Odpowiedz

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