ScrollPane automatyczny rozmiar

0

W pisaniu kodu spotkałem pewien problem i napisałem nawet jeszcze raz malutki kawałek, by stwierdzić czy czegoś nie namieszałem wcześniej, jednak to nic nie dało:

public class s extends JFrame{

	public static void main(String[] args) {
		new s();
	}
	
	s(){
		setSize(600, 400);
		
		JPanel jp = new JPanel(new FlowLayout());
		ScrollPane sp = new ScrollPane();
		JTextArea ta = new JTextArea();
		
		add(jp);
		jp.add(sp);
		sp.add(ta);
		
		ta.setPreferredSize(new Dimension(250, 300));
		
		setVisible(true);
	}

}

ScrollPane automatycznie nie zmienia swojego rozmiaru rozpychając się na maksa w JPanel, a powinien. Oczywiście mogę skorzystać z setPreferredSize dla ScrollPane, ale nie chcę bo ma się on sam dopasowywać do JPanelu, który się dopasuje do rozmiaru okna.

Efekt tego kodu: https://dl.dropbox.com/u/102323506/sp.png

2

Nie mieszaj komponentów z różnych bibliotek, rozmiar pola tekstowego podawaj raczej w "znakach", nie w pikselach. Spróbuj tak:

public class s extends JFrame{
 
        public static void main(String[] args) {
                new s();
        }
 
        s(){
                setSize(600, 400);
 
                JPanel jp = new JPanel(new FlowLayout());
                JTextArea ta = new JTextArea(15,40);
                JScrollPane sp = new JScrollPane(ta);
                
 
                add(jp);
                jp.add(sp);
 
                //ta.setPreferredSize(new Dimension(250, 300));
 
                setVisible(true);
        }
 
}
0

Dzięki, tyle razy tego używałem a tym razem dwukrotnie użyłem ScrollPane, którego wcześniej nie używałem, zawsze JScrollPane i jeszcze jedna rzecz, że w konstruktorze lepiej chyba podawać komponent.

Aż głupio, że tego nie zauważyłem, ale tak czasem bywa i pewnie jeszcze sporo czasu bym na szukanie błędu poświęcił.

1

Nie musisz podawać komponentu w konstruktorze, ale odpowiednikiem

JScrollPane = new JScrollPane(ta);

jest

JScrollPane = new JScrollPane();
sp.setVieportView(ta);

Nigdy nie wywołałem metody add na rzecz obiektu typu JScrollPane, nie mam pojęcia do czego by się to mogło przydać.

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