Java 如何根据JFrame大小设置JScrollPane的大小?

Java 如何根据JFrame大小设置JScrollPane的大小?,java,swing,jframe,jscrollpane,layout-manager,Java,Swing,Jframe,Jscrollpane,Layout Manager,我一直在开发一个包含多个组件的面板的JFrame。但是,由于其尺寸,框架无法容纳所有组件。我想使用一个可滚动的框架,遇到了一个链接,其中建议使用JScrollPane。但是,调整帧大小时,滚动窗格容器不会占用调整大小的帧的大小 有没有办法做到这一点?将框架设置为使用网格布局。Gridlayout使框架中的所有组件使用整个尺寸 Container contentPane = frame.getContentPane(); contentPane.setLayout(new GridLayout(1

我一直在开发一个包含多个组件的面板的
JFrame
。但是,由于其尺寸,框架无法容纳所有组件。我想使用一个可滚动的框架,遇到了一个链接,其中建议使用
JScrollPane
。但是,调整帧大小时,滚动窗格容器不会占用调整大小的帧的大小


有没有办法做到这一点?

将框架设置为使用网格布局。Gridlayout使框架中的所有组件使用整个尺寸

Container contentPane = frame.getContentPane();
contentPane.setLayout(new GridLayout(1,1));

将框架设置为使用网格布局。Gridlayout使框架中的所有组件使用整个尺寸

Container contentPane = frame.getContentPane();
contentPane.setLayout(new GridLayout(1,1));

默认情况下,JFrame使用BorderLayout。将构件添加到BorderLayout的
中心时,该构件将占用框架的所有可用空间

因此,基本逻辑是:

JPanel panel = new JPanel(...);
JScrollPane scrollPane = new JScrollPane( panel );
frame.add(scrollPane, BorderLayout.CENTER);

默认情况下,JFrame使用BorderLayout。将构件添加到BorderLayout的
中心时,该构件将占用框架的所有可用空间

因此,基本逻辑是:

JPanel panel = new JPanel(...);
JScrollPane scrollPane = new JScrollPane( panel );
frame.add(scrollPane, BorderLayout.CENTER);

将滚动窗格添加到JFrame<代码>添加(新的JScrollPane(某物))“我使用带有FlowLayout的框架”。为什么?框架中是否也有组件(滚动窗格外)?提供最小尺寸的ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则具有更大的宽度和高度。只需将滚动窗格显示为单个组件。不用担心要展示它里面的所有组件。是的,你是对的,我刚刚意识到我可以改变JFrame的布局。非常感谢@AndrewThompson。将滚动窗格添加到JFrame<代码>添加(新的JScrollPane(某物))“我使用带有FlowLayout的框架”。为什么?框架中是否也有组件(滚动窗格外)?提供最小尺寸的ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则具有更大的宽度和高度。只需将滚动窗格显示为单个组件。不用担心要展示它里面的所有组件。是的,你是对的,我刚刚意识到我可以改变JFrame的布局。非常感谢@AndrewThompson。无需更改布局。默认布局是边界布局。将构件添加到BorderLayout的“中心”时,构件将占用框架的所有可用空间。BorderLayout是任何应用程序的良好起点,因为您也可以将所有面板都添加到布局的“页面开始”。这有助于添加工具栏。阅读Swing教程中关于的部分,了解更多信息和工作示例。我对Java GUI做得不多,但我的大部分经验都是使用Netbeans GUI builder,它使用绝对布局的一种形式作为默认形式,所以我不知道这一点。谢谢你的提示!没有必要改变布局。默认布局是边界布局。将构件添加到BorderLayout的“中心”时,构件将占用框架的所有可用空间。BorderLayout是任何应用程序的良好起点,因为您也可以将所有面板都添加到布局的“页面开始”。这有助于添加工具栏。阅读Swing教程中关于的部分,了解更多信息和工作示例。我对Java GUI做得不多,但我的大部分经验都是使用Netbeans GUI builder,它使用绝对布局的一种形式作为默认形式,所以我不知道这一点。谢谢你的提示!事实上,我使用了一个带有FlowLayout的框架。请问还有其他方法吗?@JoeMcHart,很高兴您的问题通过使用默认的BorderLayout解决了。别忘了“接受”答案,这样人们就知道问题已经解决了。事实上,我使用的框架是FlowLayout。请问还有其他方法吗?@JoeMcHart,很高兴您的问题通过使用默认的BorderLayout解决了。别忘了“接受”答案,这样人们就知道问题已经解决了。