Znikanie komponentów z JFrame.

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.

0

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

0

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

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.

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

?

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

    }

}
0

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

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