如何将 jscrollpane 添加到 jframe?
Posted
技术标签:
【中文标题】如何将 jscrollpane 添加到 jframe?【英文标题】:how to add jscrollpane to jframe? 【发布时间】:2013-08-31 03:12:17 【问题描述】:我有以下源代码...有人可以给我一个建议如何将 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();
);
;
我的应用程序的图片:
实际状态:
【问题讨论】:
scrollable panel in swing 的可能重复项 - 重复问题无济于事,您努力尝试理解答案... 【参考方案1】: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
【讨论】:
我试图这样改变它:jframe.add(scrollFrame, BorderLayout.EAST); jframe.add(容器,BorderLayout.WEST);现在我可以在东侧看到一个薄的组件(尺寸为 cca 0.5 mm),但我仍然无法使用它进行滚动,你知道可能出了什么问题吗?我会用它再发一张照片 视口将使用preferredSize,或者,如果实现,则使用preferredScrollabelSize以上是关于如何将 jscrollpane 添加到 jframe?的主要内容,如果未能解决你的问题,请参考以下文章
动态创建 jCheckBox 并添加到 jScrollPane