Java 如何将jscrollpane添加到jframe?
我有下面的源代码…有人能给我一个建议,如何将jscrollpane添加到jframe上吗?我尝试了几次将其添加到jframe,但没有任何进展。它甚至没有显示出来Java 如何将jscrollpane添加到jframe?,java,swing,layout,jscrollpane,border-layout,Java,Swing,Layout,Jscrollpane,Border Layout,我有下面的源代码…有人能给我一个建议,如何将jscrollpane添加到jframe上吗?我尝试了几次将其添加到jframe,但没有任何进展。它甚至没有显示出来 public class Form3 { JFrame jframe = new JFrame("Etiket print."); JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); JPanel pane
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();
}
});
};
}
公共类表单3{
JFrame JFrame=新JFrame(“Etiket打印”);
JPanel panel1=新的JPanel();
JPanel panel2=新的JPanel();
JPanel panel3=新的JPanel();
JPanel panel4=新的JPanel();
JScrollPane scrollFrame=新的JScrollPane(panel2);
颜色myBlue1Color=新颜色(168、175、247);
颜色myBlue2Color=新颜色(139146255);
公共表格3(){
jframe.setMinimumSize(新尺寸(12801000));
panel2.setLayout(新的BoxLayout(panel2,BoxLayout.Y_轴));
面板2.设置自动滚动(真);
jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE);
//---------------------------------标题
panel1=createSquareJPanel(颜色为黄色,600200);
panel3=createSquareJPanel(Color.GREEN,400200);
panel4=createSquareJPanel(Color.white,280200);
JPanel容器=新的JPanel();
JPanel container1=新的JPanel();
JPanel container2=新的JPanel();
container.setLayout(新的BoxLayout(container,BoxLayout.Y_轴));
container1.setLayout(新的BoxLayout(container1,BoxLayout.Y_轴));
container2.setLayout(新的BoxLayout(container2,BoxLayout.X_轴));
容器1.添加(面板1);
容器2.添加(容器1);
容器2.添加(面板3);
容器2.添加(面板4);
container.add(container2);
容器。添加(第2组);
{
for(int i=0;iJFrame
默认使用BorderLayout
。它的默认位置(如果未指定)是中心
BorderLayout
将只允许一个组件占用其5个可用位置中的任何一个
所以当你这么做的时候
jframe.add(scrollFrame);
jframe.add(container);
它将滚动框
添加到中心位置,并在添加容器
时有效地将其删除(它实际上并没有将其删除,但结果几乎相同)
尝试提供位置约束。例如
jframe.add(scrollFrame);
jframe.add(container, BorderLayout.SOUTH);
有关更多详细信息,请参见我尝试如下更改:jframe.add(scrollFrame,BorderLayout.EAST);jframe.add(container,BorderLayout.WEST);现在我可以看到一个薄组件(大小为0.5 mm)在东侧,但我仍然无法使用它进行滚动,你知道可能会出现什么问题吗?我将发布另一张图片,其中视口将使用preferredSize或PreferredScrollabelSize(如果实现的话)的可能副本-这无助于重复问题,你需要努力尝试理解答案。。。