小编Kev*_*Qiu的帖子

嵌套的JScrollPane不合适

我遇到嵌套JScrollPanes的问题.基本上我想要一个外部JScrollPane垂直滚动而不是水平滚动(想想Netflix Web界面).在这个外部JScrollPane里面,我希望有多个水平滚动的JScrollPanes.我的问题是内部JScrollPanes的水平滚动条从不显示,因为它们看起来像是占用了JPanels的整个首选大小.这是描述我在说什么的图像:

在此输入图像描述

编辑:此代码基于camickr的答案现在正在工作:

import java.awt.BorderLayout;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class NestedScrollPane extends JFrame {

    public NestedScrollPane() {
        ScrollablePanel outerPanel = new ScrollablePanel();
        outerPanel.setScrollableWidth(ScrollablePanel.ScrollableSizeHint.FIT);
        outerPanel.setLayout(new BoxLayout(outerPanel, BoxLayout.Y_AXIS));
        for (int j = 0; j < 20; j++) {
            ScrollablePanel innerPanel = new ScrollablePanel();
            innerPanel.setScrollableHeight(ScrollablePanel.ScrollableSizeHint.NONE);
            innerPanel.setLayout(new BoxLayout(innerPanel, BoxLayout.X_AXIS));
            JScrollPane innerScrollPane = new JScrollPane(innerPanel);
            innerScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
            for (int i = 0; i < 10; i++) {
                JLabel longLabel = new JLabel("asefaesfesfesfgesgersgrsgdrsgdrsgderg ");
                innerPanel.add(longLabel);
            }
            outerPanel.add(innerScrollPane);
        }
        JScrollPane …
Run Code Online (Sandbox Code Playgroud)

java layout swing jpanel jscrollpane

4
推荐指数
1
解决办法
684
查看次数

标签 统计

java ×1

jpanel ×1

jscrollpane ×1

layout ×1

swing ×1