2013-08-22 2 views
0

exampleпрокручивать панель в колебании

У меня есть проблема при добавлении панели прокрутки в мое приложение. Мое приложение работает следующим образом: 1. На панели запуска инициализируется 1 (желтый) 2. После того, как я нажму кнопку «potvrdit» panel2 (красный инициализирован) 3. Набор панелей (зеленый) добавлен в панель2

Проблема в том, что я не могу добавить полосу прокрутки, когда количество установленных (зеленых панелей) слишком велико для экрана. Он просто добавил тонкую линию на правой стороне, как вы можете видеть.

Это часть моего исходного кода:

JFrame jframe = new JFrame("Etiket print."); 
JPanel panel0 = new JPanel(); 
JPanel panel1 = new JPanel(); 
JPanel panel2 = new JPanel(); 
JPanel panel3 = new JPanel(); 
JPanel panel4 = new JPanel(); 
JScrollPane scrollFrame = new JScrollPane(panel2); 
jframe.setMinimumSize(new Dimension(1280, 1000)); 
GridBagConstraints c = new GridBagConstraints();   
panel0.setLayout(new GridBagLayout()); 
panel1.setLayout(new GridBagLayout()); 
panel2.setLayout(new GridBagLayout()); 
panel2.setAutoscrolls(true); 
panel3.setLayout(new GridBagLayout()); 
panel4.setLayout(new GridBagLayout()); 
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
JPanel container = new JPanel(); 
JPanel container1 = new JPanel(); 
JPanel container2 = new JPanel(); 
container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS)); 
container1.setLayout(new BoxLayout(container1, BoxLayout.Y_AXIS)); 
container2.setLayout(new BoxLayout(container2, BoxLayout.X_AXIS)); 
container1.add(panel0); 
container1.add(panel1); 
container2.add(container1); 
container2.add(panel3); 
container2.add(panel4); 
container.add(container2); 
container.add(panel2); 
jframe.add(scrollFrame); 
jframe.add(container, BorderLayout.NORTH); 
jframe.pack(); 
jframe.setVisible(true); 
if (e.getActionCommand().equals("Potvrd")||e.getActionCommand().equals("myTextField")){ 

       temporaryBlockedSubharnesses.clear(); 
       panel2.removeAll(); 

       harnessPanelList.clear(); 


      GridBagConstraints c = new GridBagConstraints(); 

      for (int i=0; i<20; i++){ 
      c.fill = GridBagConstraints.HORIZONTAL; 
      c.weightx = 0.5; 
      c.gridx = 0; 
      c.gridy = i; 
      JPanel hp= new JPanel(); 
       hp.setMinimumSize(new Dimension(80, 70)); 
       hp.setMaximumSize(new Dimension(80, 70)); 
       hp.setPreferredSize(new Dimension(80, 70)); 
       if(i%2==0) { 
       hp.setBackground(myBlue1Color); 
      } 
      else { 
        hp.setBackground(myBlue2Color); 
       } 


      panel2.add(hp, c); 

       hp.repaint(); 
       hp.validate(); 
      } 
      panel2.repaint(); 
      panel2.validate(); 
      jframe.repaint(); 

     } 
+3

Вы добавляете свою панель прокрутки в панель, которую она должна прокручивать. Вероятно, это не сработает. –

+0

Уильям прав. Вместо этого вы должны добавить панель прокрутки в рамку. – BackSlash

+1

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

ответ

1

Вместо JPanel попробовать JXPanel из swingx библиотеки. Он реализует Scrollable, поэтому он поддерживает прокрутку.

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