Netbeanse akcja

0

Cześć
Jestem zmuszony zrobić aplikację pod NetBeansem nigdy nie robiłem w designerze. Mam takie pytanie pod ustawić akcję aby po kliknięciu na button podmienił mi się cały panel w ramce i wskoczył inny, który też w designerze ustawiłem. W Eclipse po ramove itp dawały efekt. Ale tutaj jakoś to zagmatwanie wygląda z początku.

Bardziej znacząca jest informacja jak tutaj zrobić aby komponenty szły w pętli w zależności od czegoś tam.
Bo z palca to jest banał. A tutaj.:/

Tal chce zrobić.
glownyPanel.removeAll();// ten panel posiada jakies tam button itp
NowyPlik np = new NowyPlik(); // clasa dziedziczaca po panelu
glownyPanel.add(np);

glownyPanel.validate();
glownyPanel.repaint();

Działa tylko akcja usunięcia.
A chce aby po naciśnięciu buttona stare buttony zostały wywalone i w panel głowny wskoczył kolejny panel.
0

Naprawdę nikt nie jest w stanie powiedzieć mi co jest źle?

0

Matisse używa jakichś złożonych Layoutów czy LayoutManagerów. Nie pamiętam dokładnie, bo dawno GUI nie robiłem, ale zbadaj sprawę. Przeanalizuj wygenerowany kod i zobacz gdzie się robi .add(Component), bo chyba właśnie dodaje się do tych LayoutManagerów.

0

No ja tu żadnych cudów nie widzę. Cholera nie wiem o co chodzi. Może ten glownyPanel jest nie potrzebny moze bezpośrednio na okno dawać buttony itp?
tak wygląda część odpowiedzialna za ustawienie glownyPanel i buttonów na nim.

 javax.swing.GroupLayout glownyPanelLayout = new javax.swing.GroupLayout(glownyPanel);
        glownyPanel.setLayout(glownyPanelLayout);
        glownyPanelLayout.setHorizontalGroup(
            glownyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(glownyPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(glownyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(glownyPanelLayout.createSequentialGroup()
                        .addComponent(wczytaj)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 238, Short.MAX_VALUE)
                        .addComponent(nowy, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(wyjscie, javax.swing.GroupLayout.Alignment.TRAILING))
                .addContainerGap())
        );

        glownyPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {nowy, wczytaj, wyjscie});

        glownyPanelLayout.setVerticalGroup(
            glownyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(glownyPanelLayout.createSequentialGroup()
                .addGap(81, 81, 81)
                .addGroup(glownyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(wczytaj)
                    .addComponent(nowy))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 116, Short.MAX_VALUE)
                .addComponent(wyjscie)
                .addContainerGap())
        );

        glownyPanelLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {nowy, wczytaj, wyjscie});
0

No i masz np taki kawałek kodu:

glownyPanelLayout.createSequentialGroup()
                        .addComponent(wczytaj)

A więc dodajesz do jakiejś tam grupy w layoucie, a nie bezpośrednio do panelu. Nigdzie nie ma wywołania metody .add(Component) na panelu.

http://docs.oracle.com/javase[...]ial/uiswing/layout/index.html

0

Hmm no niby tak. Teraz oszukałem i po ramoveAll zmieniałem layout i wszystko jest ok. Kurde ale za każdym razem nie będę mógł tak robić:/
Czyli powinienem ten nowy panel cały wstawić też grupowo? Czyli pionowo i poziomo?

0

Nie wiem dokładnie jak, masz tutorial, poczytaj. Zapewne będziesz musiał się posługiwać layoutami i nie tykać paneli bezpośrednio. Rozgryziesz layouty to będziesz miał z górki na całe życie :P

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