Остановить расширение JScrollPane в BoxLayout

JScrollPane в JPanel ниже расширяется, чтобы заполнить рамку. Как я могу остановить это расширение, чтобы размер JScrollPane был размером JButton внутри него?

  public class GUITest extends JFrame {

    public GUITest() {
        setPreferredSize(new Dimension(700, 500));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
        add(mainPanel);

        JButton button1 = new JButton();
        JButton button2 = new JButton();
        JButton button3 = new JButton();

        JScrollPane pane1 = new JScrollPane();
        mainPanel.add(button1);
        mainPanel.add(pane1);
        pane1.setViewportView(button2);
        mainPanel.add(button3);

        //Display the window.
        super.pack();
        super.setLocationRelativeTo(null);
        super.setVisible(true);
    }
}

Я попытался

pane1.setMaximumSize(button2.getPreferredSize());

но появляются полосы прокрутки, и я не вижу кнопку. Кроме того, в моей реальной программе компоненты в JScrollPane будут динамически добавляться во время выполнения, поэтому для этого мне понадобится JScrollPane для расширения.


person mmgro27    schedule 16.07.2015    source источник


Ответы (1)


Использовать

pane1.setPreferredSize(button2.getPreferredSize());

Если у вас все еще есть проблемы с автоматическим изменением размера, исправьте размер панели с помощью:

pane1.setMaximumSize(button2.getPreferredSize());
pane1.setMinimumSize(button2.getPreferredSize());
person Jordi Castilla    schedule 16.07.2015
comment
Я все еще не вижу кнопку, а полосы прокрутки видны, когда их не должно быть. Кроме того, я буду добавлять компоненты в полосу прокрутки во время выполнения, так как я могу установить предпочтительный размер, равный общему размеру всех компонентов? - person mmgro27; 16.07.2015
comment
Я исправил проблему с моей реальной программой, так что все хорошо. Спасибо за вашу помощь! - person mmgro27; 16.07.2015
comment
рад помочь! @notnek :) - person Jordi Castilla; 16.07.2015