Java JScrollPane和大小调整问题
我有一个相当大的问题,关于一个正确的方式来处理“包装”一个JPanel和允许一个滚动条 我遗漏了一点代码,但我相信所提供的应该足够了 问题是JScrollBar要么不显示,要么无法与之交互(如果我将滚动条设置为始终具有垂直条) 以下是一幅描述这一点的图像: !![不存在滚动条][1] ProjectPanel(extends JPanel)的大小是固定的,正如您所看到的,它比可视视图端口延伸得更远。无法获取JPanel(ProjectSelector)的计算高度,因为ProjectPanel也可以转换为: !![它们需要作为网格填充][2] 如果有人能提供一些关于如何做到这一点的见解,那就太好了。到目前为止,我希望不惜一切代价不要使用外部API,因为这样做弊大于利 问题: 如何将首选尺寸的高度设置为“灵活”,以便在添加组件时可以扩展?如果这不理想/不可能,我如何才能正确地允许JScrollPane高效地显示JPanel的所有组件 如果没有,则流布局将它们水平组织 也许你应该使用网格布局Java JScrollPane和大小调整问题,java,swing,layout,user-interface,jpanel,Java,Swing,Layout,User Interface,Jpanel,我有一个相当大的问题,关于一个正确的方式来处理“包装”一个JPanel和允许一个滚动条 我遗漏了一点代码,但我相信所提供的应该足够了 问题是JScrollBar要么不显示,要么无法与之交互(如果我将滚动条设置为始终具有垂直条) 以下是一幅描述这一点的图像: !![不存在滚动条][1] ProjectPanel(extends JPanel)的大小是固定的,正如您所看到的,它比可视视图端口延伸得更远。无法获取JPanel(ProjectSelector)的计算高度,因为ProjectPanel也可
如果没有,那么您可以尝试,这是一种根据需要换行的FlowLayout。如果您正在寻找不同的布局,为什么不尝试呢?它是一个非常强大和灵活的布局管理器 请参阅详细示例 从该链接,重写
initUI
方法以查看您的问题感兴趣的行为:
public void initUI() {
this.setPreferredSize(new Dimension(100, 100));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setJMenuBar(initMenuBar());
this.getContentPane().add(new JScrollPane(mainPanel = initMainPanel()));
this.setLocationByPlatform(true);
this.pack();
}
不要设置首选大小选择器。滚动窗格将此用作确定何时显示其滚动的一部分bars@MadProgrammer,如果我没有,则流布局将水平组织它们。我可以提供一个样本图像给你看,但它不会工作。我不想要任何水平滚动。让LayoutManager确定面板的preferredSize。如果我没有指定面板的宽度:@Legend我正要解决这个问题,请看一看,它解决了这个问题GridLayout的问题,我原来的问题是它没有保持内部面板的大小。它还定义了列,这是行不通的。是的,我在发布并看到你的两张图片后才意识到这一点。我可能会自己制作,但看看包装布局是如何工作的会有所帮助。谢谢你的回答和时间。很抱歉给您带来这么大的不便。这个程序是针对一个公文包的,所以我使用的外部API越少,我的工作就越可信。