JPanel i BorderLayout.

0

Witam,
prosiłbym o wytłumaczenie problemu pokazanego na załączonym .jpg
Dlaczego w dwóch przypadkach jTextField jest inaczej wyświetlone?!

0

W drugim przykładzie nie ustawiasz menadżera rozkładu, zatem używany jest domyślny (FlowLayout). Metoda add(JComponent,gdzie) raczej nie ma wtedy sensu.
Napisz

panel.add(textField);
0

Poczytaj w ogóle o layoutach: tutaj na stronce 4programmers śa chyba 4 artykuły - wprowadzą Cię.

0

dobre pytanie, ja sie tez nigdy nad tym nie zastanawialem, po prostu ustawiam jako glowne okno *.setLayout(null);
I nie wiem czy dobrze mysle czy nie, ale zdaje mi sie ze nulluje sobie caly Layout domyslny i od tej pory *.setLocation(); oraz *.setSize(); pięknie dzialają.

Przykladowo:

 JFrame frameDodaj = new JFrame("Magazyn czasopism (0.1v) 'Dodaj wpis'");
	    frameDodaj.setSize(500, 300);
	    frameDodaj.setLocationRelativeTo(null);
	    frameDodaj.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	    
	    Container content = frameDodaj.getContentPane();
	    content.setLayout(null); 
0

Dzięki za wszystkie odpowiedzi.
Zadałem pytanie przed zagłębieniem się w kwestie Layoutów. Sam problem jest bardzo prosty.
Może komuś się przyda, więc wyjaśnię. (o ile wszystko dobrze zrozumiałem)

Podsumowując. W obu przypadkach nasz panel miał inny Layout.

JPanel panel = new JPanel(); - tworzymy kontener (JPanel) z domyślnym Layoutem. Dla JPanel domyślny Layout to FlowLayout.Center. W przypadku FlowLayout'u komponenty nie są rozciągane, przyjmują preferowany rozmiar (Preferable size) i dlatego otrzymujemy wycentrowane i 'ściśnięte' JTextField.
JPanel panel = new JPanel(new BorderLayout()); - tworzymy kontener (JPanel) z BorderLayout. Dodając coś z parameterem BorderLayout.NORTH lub BorderLayout.SOUTH sprawiamy, że nasz komponent rozciąga się na całą szerokość panelu, odpowiednio na górze lub dole panelu.
(panel.add(textField, BorderLayout.NORTH);) W naszym wypadku panel zajmuje całą ramkę, więc i pole tekstowe zajmuje całą szerokość.

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