Java: 如何围绕 BorderLayout 制作 JScrollPane

Java: How to make a JScrollPane around a BorderLayout

我正在尝试制作我的第一个 GUI 程序,到目前为止一切顺利,但现在我遇到了一个问题:

首先我的 Window 有一个最小尺寸并且一切都很好,但现在我不想要最小尺寸,因此我想要一个 ScrollBar(垂直和水平)能够看到所有东西。我正在尝试使用 JScrollPane 来实现。问题是,我的程序是用 BorderLayout 构建的,但我无法将 JScrollPane 与 BorderLayout 连接起来。 "JScrollPane Constructor is undefinied for 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,因此至少如果 window 比 300px 更薄,ScrollBar 应该出现。 我在互联网上进行了大量研究,但我发现的所有内容都是 "How to create a JScrollPane in a BorderLayout" 而不是 "How to create a JScrollPane around the 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:这是我的第一个post,如果有什么不对的地方请指正(关于post)。对不起我的英语。

试试这个代码。方法 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 创建面板和桌面应用程序的其他元素。我通常在 NetBeans 中构建简单的面板、对话框,然后在应用程序中动态组合在一起。这为我提供了我想要的用户界面并非常快速地准备。