2010-03-14 2 views
1

У меня есть рамка с 4 JPanels и 1 JScrollPane, 4 панели расположены в макете север, восток, юг, запад и прокрутка в центре.Java JFrame method pack()

Я пытался получить метод pack для работы фрейма, но при запуске вы просто получаете строку заголовка окна.

Любые идеи?

JFrame conFrame; 
    JPanel panel1; 
    JPanel panel2; 
    JPanel panel3; 
    JPanel panel4; 
    JScrollPane listPane; 
    JList list; 
    Object namesAr[]; 
    ... 
    ... 
    ... 
    namesAr= namesA.toArray(); 
    list = new JList(namesAr); 
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    list.setLayoutOrientation(JList.HORIZONTAL_WRAP); 
    list.setVisibleRowCount(-3); 
    list.addListSelectionListener(this); 

    listPane = new JScrollPane(list); 

    panel1 = new JPanel(); 
    panel2 = new JPanel(); 
    panel3 = new JPanel(); 
    panel4 = new JPanel(); 

    conFrame.setLayout(new BorderLayout()); 

    panel1.setPreferredSize(new Dimension(100, 100)); 
    panel2.setPreferredSize(new Dimension(100, 100)); 
    panel3.setPreferredSize(new Dimension(100, 100)); 
    panel4.setPreferredSize(new Dimension(100, 100)); 

    panel1.setBackground(Color.red); 
    panel2.setBackground(Color.red); 
    panel3.setBackground(Color.red); 
    panel4.setBackground(Color.red); 

    conFrame.pack(); 

    conFrame.add(panel1, BorderLayout.NORTH); 
    conFrame.add(panel2, BorderLayout.EAST); 
    conFrame.add(panel3, BorderLayout.SOUTH); 
    conFrame.add(panel4, BorderLayout.WEST); 
    conFrame.add(listPane, BorderLayout.CENTER); 
    conFrame.setVisible(true); 

ответ

2

Вы должны добавить панелей к каркасу «перед» вы делаете пакет() в противном случае нет ничего, чтобы упаковать.

Кроме того, макет по умолчанию для фрейма - BorderLayout.

+0

Спасибо, что сработало: D Здравый смысл на самом деле. – Oliver