2013-08-28 2 views
2

У меня есть исходный код ... Может кто-нибудь, пожалуйста, дайте мне совет, как добавить jscrollpane на jframe? Я попробовал несколько раз, чтобы добавить его в jframe, но без какого-либо прогресса. Это даже не показывает.Как добавить jscrollpane в jframe?

public class Form3 { 
     JFrame jframe = new JFrame("Etiket print."); 
     JPanel panel1 = new JPanel(); 
     JPanel panel2 = new JPanel(); 
     JPanel panel3 = new JPanel(); 
     JPanel panel4 = new JPanel(); 
     JScrollPane scrollFrame = new JScrollPane(panel2); 
     Color myBlue1Color = new Color(168, 175, 247); 
     Color myBlue2Color = new Color(139, 146, 255); 



      public Form3(){ 
       jframe.setMinimumSize(new Dimension(1280, 1000)); 
       panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS)); 
       panel2.setAutoscrolls(true); 
       jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

       //---------------------------------Header 
       panel1 = createSquareJPanel(Color.YELLOW, 600,200); 
       panel3 = createSquareJPanel(Color.GREEN, 400,200); 
       panel4 = createSquareJPanel(Color.white, 280,200); 
       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(panel1); 
       container2.add(container1); 
       container2.add(panel3); 
       container2.add(panel4); 
       container.add(container2); 
       container.add(panel2); 

       { 

        for (int i=0; i<25; i++){ 

         JPanel harnessPanel= new JPanel(); 
         harnessPanel.setMinimumSize(new Dimension(1280, 70)); 
         harnessPanel.setMaximumSize(new Dimension(1280, 70)); 
         harnessPanel.setPreferredSize(new Dimension(1280, 70)); 
         if(i%2==0) { 
          harnessPanel.setBackground(myBlue1Color); 
         } 
         else { 
          harnessPanel.setBackground(myBlue2Color); 
         } 
         panel2.add(harnessPanel); 

         harnessPanel.repaint(); 
         harnessPanel.validate(); 
        } 
        panel2.repaint(); 
        panel2.validate(); 
       } 
       jframe.add(scrollFrame); 
       jframe.add(container); 

       jframe.pack(); 
       jframe.setLocationRelativeTo(null); 
       jframe.setVisible(true); 

      } 

      private JPanel createSquareJPanel(Color color, int size1, int size2) 
      { 
       JPanel tempPanel = new JPanel(); 
       tempPanel.setBackground(color); 
       tempPanel.setMinimumSize(new Dimension(size1, size2)); 
       tempPanel.setMaximumSize(new Dimension(size1, size2)); 
       tempPanel.setPreferredSize(new Dimension(size1, size2)); 
       return tempPanel; 
      } 

      public static void main (String args[]){ 
       SwingUtilities.invokeLater(new Runnable() { 
        @Override 
        public void run() { 
         Form3 myF=new Form3(); 

        } 
       }); 
      }; 
     } 

картина моего приложения: enter image description here

фактическое состояние: enter image description here

+0

возможно дубликат [прокручивать панель в колебании] (http://stackoverflow.com/questions/18381857/scrollable-panel-in-swing) - Это не помогает повторить вопрос, вы много работаете, чтобы попытаться понять ответы ... – kleopatra

ответ

5

JFrame использует BorderLayout по умолчанию. Позиция по умолчанию (если вы не указали один) - CENTER.

BorderLayout позволит одному компоненту занять любое из его 5 доступных позиций.

Так что, когда вы делаете ...

jframe.add(scrollFrame); 
jframe.add(container); 

Он добавляет scrollFrame в центральное положение и эффективно удаляет его при добавлении container (это на самом деле не удалить его, но результат просто о одна и та же).

Попробуйте поставить ограничение позиции. Например ...

jframe.add(scrollFrame); 
jframe.add(container, BorderLayout.SOUTH); 

См How to use BorderLayout для более подробной информации

+0

Я попытался изменить его следующим образом: jframe.add (scrollFrame, BorderLayout.EAST); jframe.add (контейнер, BorderLayout.WEST); теперь я могу видеть тонкий компонент (размером около 0,5 мм) с восточной стороны, но все же я не могу использовать его для прокрутки, знаете ли вы, что может быть неправильным? я выложу еще один рис. – Michael

+0

В окне просмотра будет использоваться либо предпочтительный размер, либо, если он будет реализован, предпочтительныйScrollabelSize – MadProgrammer

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

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