Любой другой способ добавить полосу прокрутки в JPanel, кроме JscrollPane

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

JPanel paraJPanel = new JPanel();
JScrollPane SP_para_list = new JScrollPane(paraJPanel);
add(SP_para_list).setBounds(10,30,250,350); 

Таким образом я добавляю полосы прокрутки на панель. Но он показывает только пустую панель с границами. Компоненты на панели не отображаются. Хотя я добавил в него несколько ярлыков. Это правильно? Есть ли другой способ добавить полосу прокрутки на панель.

заранее спасибо


person Sachin Mhetre    schedule 19.03.2012    source источник
comment
1) Используйте макеты. 2) Если что-то в наборе инструментов не работает так, как вы ожидаете, спросите, что вы делаете неправильно, а не Как сделать Y без X? 3) Чтобы быстрее получить помощь, опубликуйте SSCCE.   -  person Andrew Thompson    schedule 19.03.2012
comment
пожалуйста, изучите соглашения об именах Java и придерживайтесь их   -  person kleopatra    schedule 19.03.2012


Ответы (1)


Вам нужно установить PreferredSize для панели, чтобы отображалась полоса прокрутки, как показано ниже.

даже если вы не задали макет, на панели уже установлен макет по умолчанию.

public static void main(String[] args)
{
    JFrame frame = new JFrame();
    JPanel panel = new JPanel()
    {
        @Override
        public Dimension getPreferredSize() {
            return new Dimension(800, 1000);
        }
    };
    panel.add(new JLabel("Test1"));
    panel.add(new JLabel("Test2"));
    frame.getContentPane().add(new JScrollPane(panel), BorderLayout.CENTER);
    frame.setSize(600, 800);
    frame.setVisible(true);
}
person chenyi1976    schedule 19.03.2012
comment
Я хочу установить эту панель в определенное положение. Я не использую никакой макет. - person Sachin Mhetre; 19.03.2012
comment
нет, никогда не используйте setXXSize (это работа панели — возвращать что-то разумное на основе своего содержимого) - person kleopatra; 19.03.2012