Znikanie komponentów z JFrame.

Odpowiedz Nowy wątek
2011-11-26 15:16
Arbas
0

Witam. Mam mały problem, od pewnego czasu w z JFrame znikają mi komponenty. Wygląda to tak, dodaje panel, w nim rozmieszczam komponenty, 1 uruchomienie jest git. Kolejne, nie widać już żadnych komponentów, jedynie pusty JFrame. Wystarczy, że zmienię położenie przynajmniej 1 komponentu i ponownie widzę wszystkie. Lecz przy kolejnych kompilacjach kodu - komponenty znikają. Jakiś pomysł jak to rozwiązać? Przez długi czas nie miałem takich problemów, wszystko było w porządku. Od jakiegoś czasu ta sytuacją powtarza się ciągle.

Pozostało 580 znaków

2011-11-26 15:21
bo
0

Być może za wcześnie (przed dodaniem komponentów) wywołujesz setVisible(true).

Pozostało 580 znaków

2011-11-26 15:25
Arbas
0

Niestety, moment wywoływania setVisible jest tutaj bez znaczenia. Wypróbowałem kilka możliwości.

Pozostało 580 znaków

2011-11-26 15:40
0

Ma znaczenie.
http://docs.oracle.com/javase[...].html#setVisible%28boolean%29
http://docs.oracle.com/javase[...]l#add%28java.awt.Component%29

Jeśli dodajesz coś po tym, to powinieneś wywoływać:
http://docs.oracle.com/javase[...]Container.html#validate%28%29

Dobrze by było, gdybyś pokazał kawałek kodu, z którym tak ci się dzieje.

edytowany 2x, ostatnio: iooi, 2011-11-26 15:41

Pozostało 580 znaków

2011-11-26 15:51
asd
0

Czyli przykladowo:
JFrame a = new JFrame();
JPanel b = new JPanel();
JButton c = new JButton();

a.setVisible();
a.add(b);
b.add(c);
a.validate();

?

Pozostało 580 znaków

2011-11-26 15:53
Arbas
0

Przykładowy JFrame w którym występuje ten problem.

 public class Frame {

    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

    public Frame(){

        JFrame okno = new JFrame(); 
       okno.setVisible(true);
        okno.setSize(200, 150);
        okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        okno.setBackground(new Color(150,150,190));
        okno.setLocation(400, 240);
        okno.setResizable(false);

        JPanel panel = new JPanel();
        okno.add(panel);
       panel.validate();      

        JTextArea login = new JTextArea();
        panel.add(login);
        login.setBounds(60,40,40,20);

        JTextArea pass = new JTextArea();
        panel.add(pass);
        pass.setBounds(100, 70, 40, 20);       

    }

    public static void main(String args[]){

        Frame a = new Frame();

    }

}

Pozostało 580 znaków

2011-11-26 16:39
0

Problem rozwiązany. Wystarczyło dodać panel.setLayout(null);. Wszystkim udzielającym się, dziękuje za dobre chęci:)

Albo odpowiednio rozmieścić komponenty za pomocą layoutu, zamiast ręcznie ustalać położenie. - iooi 2011-11-26 17:18

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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