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 中构建简单的面板、对话框,然后在应用程序中动态组合在一起。这为我提供了我想要的用户界面并非常快速地准备。
我正在尝试制作我的第一个 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 中构建简单的面板、对话框,然后在应用程序中动态组合在一起。这为我提供了我想要的用户界面并非常快速地准备。