Rysowanie JPanel na JFrame

0

Witam. Mam JFrame, na którym mam jakieś buttony, obrazki itp. Jeden button ma za zadanie zmienić cały obszar programu, więc zrobiłem tak, że po kliknięciu tego przycisku rysowany jest nowy JPanel:

JButton btnNewButton_2 = new JButton("Szukaj krok po kroku");
btnNewButton_2.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent arg0)
    {
        Producent p = new Producent();
        getContentPane().add(p);
        p.setBounds(0, 80, 800, 520);
        p.setVisible(true);
        pack();
    }
});

Mam jednak pewien problem bo na tym JFrame jest na samej górze logo, które chciałbym pozostawić, dlatego daje p.setBounds(0, 80, 800, 520); . Jednak JPanel się nie rysuje.

0

Pomoże ktoś?

0

A jakiego layout managera używasz?

0

Absolute.

0

To trochę słabo. Powinieneś używać layout managerów, gdyż znacznie ułatwiają życie (chyba, że nie możesz). Tu masz tutorial http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html. Tu najlepiej nadawałby się CardLayout. A Twój nowy panel nie pojawia się dlatego, że dodajesz go używając metody add(Componenet comp). Szybki wgląd w dokumentację: (http://docs.oracle.com/javase/6/docs/api/java/awt/Container.html)

Components added to a container are tracked in a list. The order of the list will define the components' front-to-back stacking order within the container. If no index is specified when adding a component to a container, it will be added to the end of the list (and hence to the bottom of the stacking order).

Czyli innymi słowy Twój panel jest dodawany do ramki, ale jest przesłonięty przez wcześniej dodane komponenty.

0

To czym go dodać jak nie add?

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