当前位置: 代码迷 >> java >> Java:如何在BorderLayout周围制作JScrollPane
  详细解决方案

Java:如何在BorderLayout周围制作JScrollPane

热度:69   发布时间:2023-07-18 08:51:43.0

我试图使我的第一个GUI程序和沙发一切顺利,但是现在我遇到了一个问题:

首先,我的Window具有最小尺寸,并且一切正常,但是现在我不希望具有最小尺寸,因此我希望ScrollBar(垂直和水平)能够看到所有内容。 我正在尝试使用JScrollPane做到这一点。 问题是,我的程序使用BorderLayout构造,并且无法将JScrollPane与BorderLayout连接。 “ JScrollPane构造函数未为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)中是一个JPanel,其最小宽度为“ 300”,因此至少如果窗口的厚度小于300px,则ScrollBar应该适用。 我在iinternet上进行了大量研究,但发现的所有内容都是“如何 BorderLayout中创建JScrollPane”,而不是“如何在BorderLayout 周围创建JScrollPane”。

为了澄清这一点,我将展示一张图片(红色的是JScrollBars)。 抱歉,我不允许上传图片,所以请看这里: :

而且我不知道我要给你多少代码,因为一切都会变得很多,所以如果您需要更多,请说些什么。

再次是关于它的重要代码:

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

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

试试这个代码。 initComponent()方法可在构造器中或构建视图的地方使用。 下面,我根据需要放置了带有BorderLaylout的JFrame示例:

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的简单面板,对话框中进行构建,然后在应用程序中将它们动态地组合在一起。 这为我提供了所需的用户界面,并且准备得非常快。

  相关解决方案