避免boxlayout重叠

时间:2013-07-13 02:00:00

标签: java swing jpanel jscrollpane jradiobutton

我再来一次......与秋千作战!所以我正在创建一个将在applet中显示的在线测试。测试中的问题数量不固定,因此我需要根据测试提出问题。为了显示问题,我创建了一个问题jpanel,然后我添加到applet中显示的容器面板。对于容器面板,我使用的是boxlayout,它允许我将问题叠加在另一个上面。

我的问题是,在向容器面板添加超过5个问题后,问题开始重叠。那么有人可以指导我吗?

首先,我该如何避免重叠? 第二,jpanel是否有固定的最大尺寸?或者有没有办法让它足够大以适应面板容器中的所有测试问题?我想将面板嵌入到jscrollpane中,或者我不知道一旦容器面板嵌入到applet中,当我向下滚动浏览器时它会向下滚动...谢谢你们的任何帮助

这是一张没有太多问题时的样子......

enter image description here

这是代码......

 public class Test extends JPanel {

    public Test() {
        setLayout(null);            
        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(0, 5, 712, 1200);
        add(scrollPane);

        JPanel panel = new JPanel();
        scrollPane.setViewportView(panel);
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

        MultipleChoice q1 = new MultipleChoice();
        panel.add(q1);
        MultipleChoice q2 = new MultipleChoice();
        panel.add(q2);
        MultipleChoice q3 = new MultipleChoice();
        panel.add(q3);
        MultipleChoice q4 = new MultipleChoice();
        panel.add(q4);
        MultipleChoice q5 = new MultipleChoice();
        panel.add(q5);    
    }    
}

1 个答案:

答案 0 :(得分:2)

我猜,我所能做的就是在没有sscce的情况下猜测,但如果您的MultipleChoice JPanel使用null布局,那么它将无法为布局管理器提供合适的preferredSize重叠的组件。如果是这样,那么解决方案就是不使用null布局,几乎永远

您在评论中说明:

  

我认识好友......但是当我对波动不太了解时,我怎么能更具体?我正在使用Windowbuilder,这是将容器布局设置为绝对时给出的布局。

  • “伙伴”?
  • 关于,“当我对波动不太了解”时:然后了解Swing。转到Layout Manager Tutorials并阅读布局管理器。
  • 关于,“我正在使用Windowbuilder,这是将容器布局设置为绝对时给出的布局。”:您自己承认,问题的一部分是您还没有完全理解Swing,特别是使用它的布局管理器,这个问题的一个原因是你正在使用一个工具来缓解你不必理解这一点。我劝你不要使用WindowBuilder。再次阅读布局管理器并学习如何使用它们。你不会对此感到遗憾。