Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将固定大小的JPanel添加到jScrollPane_Java_Swing_User Interface_Awt - Fatal编程技术网

Java 将固定大小的JPanel添加到jScrollPane

Java 将固定大小的JPanel添加到jScrollPane,java,swing,user-interface,awt,Java,Swing,User Interface,Awt,在我的项目中,我有一个滚动窗格,它可以包含各种面板,具体取决于用户操作。 顺便说一下,我希望每个面板都有一个固定的高度,另外,它们应该显示在前一个面板的下方。相反,它们会根据现有面板的数量更改其高度。 我写了一个主要的类,目的是再现当前的行为,以及一个可以解释我的目标的图像 图片: 代码: 你想要的是: JPanel scrollPaneContainer = new JPanel( new BorderLayout() ); Box panelContainer = Box.createVe

在我的项目中,我有一个滚动窗格,它可以包含各种面板,具体取决于用户操作。 顺便说一下,我希望每个面板都有一个固定的高度,另外,它们应该显示在前一个面板的下方。相反,它们会根据现有面板的数量更改其高度。 我写了一个主要的类,目的是再现当前的行为,以及一个可以解释我的目标的图像

图片:

代码:


你想要的是:

JPanel scrollPaneContainer = new JPanel( new BorderLayout() );
Box panelContainer = Box.createVerticalBox(); 
scrollPaneContainer.add(panelContainer, BorderLayout.PAGE_START);
JScrollPane myScrollPaneContent = new JScrollPane(scrollPaneContainer);
现在,您的panelContainer的首选高度将得到尊重。如果有任何额外的空间,它将去中心。如果没有足够的空间,将显示滚动条


另外,您不应该使用静态变量。这是GUI设计拙劣的标志。您不应该在main()方法中创建GUI组件。请看视频中的演示。它们向您展示了如何创建一个面板来容纳Swing组件,然后将面板添加到框架中。

“在我的项目中,我有一个滚动窗格,它可以包含各种面板,具体取决于用户操作。”听起来更适合于带有适当单元格渲染器的
JList
。它工作正常。顺便说一下,我注意到我不能将JPanel添加到某个索引中,因为Box类没有getIndexOf()方法。你有什么建议吗?
JPanel scrollPaneContainer = new JPanel( new BorderLayout() );
Box panelContainer = Box.createVerticalBox(); 
scrollPaneContainer.add(panelContainer, BorderLayout.PAGE_START);
JScrollPane myScrollPaneContent = new JScrollPane(scrollPaneContainer);