2015-07-16 7 views
0

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

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.

ответ

2

Использование

pane1.setPreferredSize(button2.getPreferredSize()); 

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

pane1.setMaximumSize(button2.getPreferredSize()); 
pane1.setMinimumSize(button2.getPreferredSize()); 
+0

Я до сих пор не могу видеть кнопку и полосы прокрутки видны, когда они не должны быть. Кроме того, я буду добавлять компоненты в ScrollBar во время выполнения, так как я могу установить предпочтительный размер как общий размер всех компонентов? – mmgro27

+1

Я исправил проблему с моей реальной программой сейчас, так что все хорошо. Спасибо за вашу помощь! – mmgro27

+0

рад помочь! @notnek :) –

 Смежные вопросы

  • Нет связанных вопросов^_^