2012-04-12 4 views
1

У меня есть класс, который расширяет JPanel. Код ниже:JScrollPane не отображается в унаследованном JPanel

public class Test extends JPanel implements Testnterface { 
    private JScrollPane listScroller; 

    DefaultListModel model; 
    private JList requestList;  
    public Test() { 

     String title = "Stackoverflow Question"; 
     setBorder(BorderFactory.createTitledBorder(title)); 
     model = new DefaultListModel(); 
    requestList = new JList(); // create a list 
     listScroller = new JScrollPane(requestList); // create a scrollbar to the list 
     listScroller.setPreferredSize(new Dimension(250, 80)); 

     setLayout(null); 
     add(listScroller); // even though I add the scrollPane, nothing is displayed 
    } 
} 

Я обновил код. Кажется, я не могу показать, что мой JScrollPane будет отображаться на моем JPanel, даже если я его добавлю. У кого-нибудь есть идеи?

+0

'setLayout (NULL);' Это почти наверняка часть проблемы. Я буду смотреть дальше, когда вы публикуете SSCCE. –

+0

setLayout (null) используется, поэтому я могу настроить компоненты графически с помощью конструктора. –

+1

* "setLayout (null) используется, чтобы я мог .." * .. запустил GUI, а затем прибежал к SO за помощью? *** Используйте макеты! *** В стороне, большинство «конструкторов» стоит использовать макеты поддержки. –

ответ

3

Я была такая же проблема и решить ее, окружив панель прокрутки с JPanel:

final JScrollPane jScrollPane = new JScrollPane(list, 
    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 

final JPanel panel = new JPanel(new BorderLayout(BORDER_SIZE, BORDER_SIZE)); 
panel.setBorder(BorderFactory.createEmptyBorder(BORDER_SIZE, BORDER_SIZE, 
     BORDER_SIZE, BORDER_SIZE)); 

panel.add(jScrollPane); 
Смежные вопросы