问题描述
我试图使我的第一个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:这是我的第一篇文章,所以如果我做错了(关于这篇文章),请纠正我。 对不起,我的英语。
1楼
试试这个代码。 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的简单面板,对话框中进行构建,然后在应用程序中将它们动态地组合在一起。 这为我提供了所需的用户界面,并且准备得非常快。