2013-08-28 51 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(container,BorderLayout.WEST);现在我可以在东面看到一个很薄的组件(尺寸为cca 0.5毫米),但仍然无法将其用于滚动,您是否知道可能会出现什么问题?我会用它张贴另一张图片 – Michael

+0

视口将使用preferredSize或者如果实施,使用preferredScrollabelSize – MadProgrammer