Szczerze mówiąc, to nie programuję w javie i prawie nie miałem styczności ze swingiem, ale na moje to jest tak, że JScrollPane pobiera dane dane o potrzebnym rozmiarze dla danego kontenera (JPanel w tym przypadku) na podstawie jego układu. Którego u Ciebie nie ma..
http://www.jguru.com/faq/view.jsp?EID=58838Jeśli zamienisz to na jakieś sensowne układy we wszystkich miejscach, to powinno zadziałać. W szczególności pozycjonowania według współrzędnych pikselowych należy raczej unikać, bo przy zmianie rozmiarów czcionek, czy chociaż dpi (inny monitor) może się łatwo rozsypać.
Panel p2 = new Panel();
p2.setSize(300, 100);
p2.setLocation(0, 102);
metoda add dla JScrollPane nie działa tak jak byś chciał.. Nie potrafię Ci wyjaśnić co dokładnie się dzieje, żeby to ogarnąć, to trzeba zobaczyć jak działa JScrollPaneLayout.
Tu jest schemat układu:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JScrollPane.htmlprzykład użycia:
http://forums.devshed.com/java-help-9/jscrollpane-layout-manager-193654.htmlCzyli generalnie w scrollpane może siedzieć co najwyżej jeden widget. Zatem potrzebujesz dodatkowego kontenera z jakimś układem, który będzie trzymał te dwa panele.
**
Do tego trzeba coś zrobić z setLauout(null) w konstruktorze Panelu.