我正在尝试制作我的第一个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:这是我的第一篇文章,所以如果我做错了(关于帖子),请纠正我。对不起我的英语。
答案 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然后在应用程序中动态组合在一起。这为我提供了我想要的用户界面,并且准备得非常快。