如何将jscrollpane添加到jframe?

我有以下源代码…有人可以给我一个如何将jscrollpane添加到jframe的建议吗? 我尝试了几次将它添加到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(); } }); }; } 

我的应用图片: 在此处输入图像描述

实际状态: 在此处输入图像描述

默认情况下, JFrame使用BorderLayout 。 它的默认位置(如果你没有指定)是CENTER

BorderLayout只允许一个组件占用它的5个可用位置中的任何一个。

所以,当你这样做……

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

它将scrollFrame添加到中心位置,并在添加container时有效地将其删除(它实际上没有删除它,但结果大致相同)。

尝试提供位置约束。 例如…

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

有关更多详细信息,请参见如何使用BorderLayout