2013-06-13 1 views
1

Я начинаю с Java и Swing, поэтому у меня есть очень простой вопрос, но я просто не могу найти (простой) способ его решения ...Как я могу создать JScrollPane высоту JPanel

То, что я имею в виду, это просто список скроллеров, которые занимают всю высоту панели, не более того. Вот код, который я уже писал, спасибо, чтобы помочь мне найти путь к достижению своей цели:

public class TestCode { 

public static void main(String[] args) { 

    JFrame window = new JFrame("Test"); 
    window.setSize(300, 300); 
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel panelUp = new JPanel(); 
    JPanel panelCenter = new JPanel(); 
    JPanel panelDown = new JPanel(); 

    window.add(panelUp, BorderLayout.NORTH); 
    window.add(panelCenter, BorderLayout.WEST); 
    window.add(panelDown, BorderLayout.SOUTH); 

    panelUp.setBackground(new Color(200, 240, 200)); 
    panelCenter.setBackground(new Color(240, 200, 200)); 
    panelDown.setBackground(new Color(200, 200, 240)); 

    Vector v = new Vector(); 
    v.addElement("Element 1"); 
    v.addElement("Element 2"); 
    v.addElement("Element 3"); 
    v.addElement("Element 4"); 
    v.addElement("Element 5"); 
    v.addElement("Element 6"); 

    JList list = new JList(v); 
    JScrollPane listScroller = new JScrollPane(list); 

    panelCenter.add(listScroller); 

    window.setVisible(true); 
} 

} 
+0

Если вы хотите использовать 'BorderLayout', вы должны сначала установить макет на' BorderLayout'. Попробуйте 'window.setLayout (...)'. – Sebastian

ответ

8

расположение по умолчанию для JPanel является FlowLayout, для управления, чтобы быть в центре и заполнить JPanel вам нужно использовать BorderLayout. Попробуйте следующее:

panelCenter.setLayout(new BorderLayout()); 
panelCenter.add(listScroller, BorderLayout.CENTER); 
+0

Привет, спасибо, Ник, это именно то, что мне нужно. К сожалению, это было довольно просто, но я вообще не знаком с макетом на Java. Кстати, ** panelCenter.add (listScroller, BorderLayout.CENTER) ** довольно бесполезен, все отлично работает без –

3

Вам не нужно panelCenter, просто добавьте listScroller непосредственно к корневой панели, используя window.add(listScroller, BorderLayout.CENTER). Важно использовать CENTER, если вы хотите заполнить всю площадь компонента BorderLayout. См. the tutorial on BorderLayout для получения дополнительной информации.

Если вы хотите сохранить panelCenter, обязательно сообщите об этом BorderLayout. Раскладка по умолчанию для JPanel: FlowLayout.

Я хотел бы использовать:

JPanel panelCenter = new JPanel(new BorderLayout()); 
Смежные вопросы