Java:如何围绕BorderLayout制作JScrollPane

时间:2015-07-30 18:19:44

标签: java jscrollpane border-layout

我正在尝试制作我的第一个GUI程序,并确保一切顺利,但现在我遇到了问题:

首先我的窗口有一个最小尺寸,一切都很好,但现在我不想要一个最小尺寸,因此我想要一个ScrollBar(垂直和水平)能够看到一切。我试图用JScrollPane来做这个。问题是,我的程序是用BorderLayout构建的,我无法将我的JScrollPane与BorderLayout连接起来。 " JSLrollPane构造函数未找到BorderLayout"。所以我 初始化了一个JPanel并将布局设置为我的BorderLayout。

windowContainer = new JPanel(new BorderLayout(10, 10));

然后我可以将" windowContainer"(JPanel)与我的JscrollPane连接

windowScrollPane = new JScrollPane(windowContainer);

更改其余代码后(已更改" getContentPane.add ..."到" windowContainer.add ...")我没有成为错误,但JScrollPane没有工作。在我的BorderLayout(LINE_START)中是一个最小宽度为" 300"的JPanel,所以至少如果窗口比300px更薄,ScrollBar应该是appaer。 我在iinternet上花了很多研究,但我找到的所有东西都是"如何在中创建一个JScrollPane 一个BorderLayout"而不是"如何创建一个JScrollPane 围绕 BorderLayout"。

为了澄清它,我将上传一张照片(红色的东西是JScrollBars)。 对不起,我不允许上传图片,所以请看这里:http://www.fotos-hochladen.net/view/jscrollpanepu20315v9x.png

而且我不知道我必须给你多少代码,因为一切都会很多,所以只要你需要更多的话就说些什么。

以下是关于它的重要代码:

... 
windowContainer = new JPanel(new BorderLayout(10, 10));
windowScrollPane = new JScrollPane(windowContainer);
frame.add(windowContainer);
...

PS:这是我的第一篇文章,所以如果我做错了(关于帖子),请纠正我。对不起我的英语。

1 个答案:

答案 0 :(得分:0)

试试这段代码。方法initComponent()在构造函数中使用,或者在构建视图的位置使用。下面我根据需要将JFrame示例与BorderLaylout放在一起:

public class TestWindow extends JFrame{

int containerHeigh=300;
int containerWitdh=400;
private JPanel container;
private JPanel westPanel;
private JPanel eastPanel;
private JPanel northPanel;
private JPanel southPanel;
private JPanel centerPanel;
private JScrollPane scroll;

public TestWindow(){
    super("test");
    initComponents();
}

private void initComponents(){
    container=new JPanel();
    westPanel=new JPanel();
    eastPanel=new JPanel();
    northPanel=new JPanel();
    southPanel=new JPanel();
    centerPanel=new JPanel();

    //...fill panels of container
    westPanel.setBackground(new Color(95,183,70));
    eastPanel.setBackground(new Color(0,164,232));
    northPanel.setBackground(new Color(255,255,185));
    southPanel.setBackground(new Color(34,177,76));
    centerPanel.setBackground(new Color(152,114,203));

    scroll=new JScrollPane();
    scroll.setViewportView(container);

    BorderLayout containerLayout=new BorderLayout(containerHeigh, containerWitdh);
    container.setLayout(containerLayout);
    container.add(westPanel, BorderLayout.WEST);
    container.add(eastPanel, BorderLayout.EAST);
    container.add(northPanel, BorderLayout.NORTH);
    container.add(southPanel, BorderLayout.SOUTH);
    container.add(centerPanel, BorderLayout.CENTER);

    add(scroll);
    setVisible(true);
}

public static void main(String...args){
    new TestWindow();
}

}

如果需要,可以使用NetBeans创建面板和desctop应用程序的其他元素。我通常在NetBeans中构建简单的Panels,Dialog然后在应用程序中动态组合在一起。这为我提供了我想要的用户界面,并且准备得非常快。