[Java] JScrollPane głupio działa

0

Mój problem jest następujący: chcę podzielić okno na 2 części: lewą dla zdjęć i prawa dla listy przycisków otwierających poszczególne rysunki. Przygotowałem ten skrypt (sory za bałagan, ale próbowałem już rozwiązać problem i zostało trochę kodu z tego). Po kompilacji wszystkie przyciski wyłażą poza panel i przesuwają się po całym ekranie podczas przewijania jak na rysunkach, co zrobić?

public class MenuWindow extends JPanel{
    JPanel lewy = new JPanel();
    JPanel prawy = new JPanel();
    JScrollPane prawyScroll;
    //JPanel prawyZewnetrzny = new JPanel();
    
    /** Creates a new instance of MenuWindow */
    public MenuWindow() {
        init();
    }
    
    public void init(){
        this.setLayout(null);
        lewy.setBounds(5,5,690,640);
        this.add(lewy);
        
        lewy.setBackground(Color.GREEN);
        
        
        
        //prawyZewnetrzny.setBounds(695,5,300,640);
        prawy.setBackground(Color.BLUE);
        //this.add(prawyZewnetrzny);
        //prawyZewnetrzny.add(prawyScroll);
        
        prawyScroll = new JScrollPane(prawy, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        prawyScroll.setBounds(695,5,300,640);
        //prawyScroll.add(prawy);
        this.add(prawyScroll);
        prawyScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        
        
        
        
        
        for(int i = 0; i<40; i++){
            Button b = new Button("A");
            
            prawy.add(b);
        }
        
        prawyScroll.setViewportView(prawy);
    }
    
}

http://odsiebie.com/upload/1704740322.gif
user image

http://odsiebie.com/upload/1964984802.gif
user image

0

Częściowo rozwiązałem problem (ta informacja dla tych co mają ten sam kłopot, ja nadal czekam na odpowiedź):

Zastępując klasę JScrollPane klasą ScrollPane uzyskujemy pożądany efekt kosztem wyglądu.

0

Po pierwsze, wroc do JScrollPane, jak mozesz, to uzywaj bibliotek swing a nie awt.
A co do problemu.

Po pierwsze, poczytaj o layout managerach (http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html), jedna metoda rozwiazania twojego problemu, ale nie polecam takiego sposobu [ale warto zapoznac sie z nimi].

Skoro chcesz liste, to uzyj listy JList, tutorial: http://java.sun.com/docs/books/tutorial/uiswing/components/list.html

Powyzszy tutorial + dokumentacja JList w javadoc na 100% pozwoli ci rozwiazac ten problem.
Nie bede ci pisac gotowego kodu jak to zrobic, poniewaz o wiele bardziej ksztalcace jest samodzielne zapoznanie sie z tutorialem i dokumentacja.

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