【问题标题】:Scroll problem - doesn't scroll when I press滚动问题 - 按时不滚动
【发布时间】:2011-04-26 08:43:26
【问题描述】:

我在 Java 中有一个奇怪的问题。我有 JScrollPane

paneScroll=new JScrollPane(nav,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

其中 nav 是 JPanel

public class ScrollableNavigationPanelZones extends JPanel {
    private ButtonGroup buttonGroup = new ButtonGroup();
    private static final long serialVersionUID = -455651438039139284L;
    protected JViewport viewport;
    private JPanel panel;

    private int offset = 100;

    public ScrollableNavigationPanelZones() {
        super();
        setLayout(new BorderLayout());

        panel = new JPanel();
        panel.setPreferredSize(new Dimension(0,160));
        FlowLayout fl = new FlowLayout();
        fl.setVgap(5);
        fl.setAlignment(FlowLayout.LEFT);
        panel.setLayout(fl);
        add(panel,BorderLayout.CENTER);



    }
    }

它在右侧显示滚动,但没有那个可以移动的小框(我在滚动的顶部和底部都有箭头,但是当我按下时我无法滚动)。当我更改 ScrollableNavigationPanelZones panel.setPreferredSize(new Dimension(0,16000));它有效,但显示空白。为什么 JScrollPane 不读取面板的实际高度?什么是错误? 有人可以帮忙吗?

【问题讨论】:

  • 这个“小盒子”叫做thumb :-)

标签: java swing jpanel jscrollpane


【解决方案1】:

只有当有东西可以滚动时才会显示滚动框,即如果面板的首选高度超过滚动面板的实际高度。当然,如果您将首选高度设置为 16000,如果面板没有用控件填充所有 16000 像素,它将显示大量空白空间。

如果面板适合滚动窗格,则滚动条默认隐藏。标志 VERTICAL_SCROLLBAR_​​ALWAYS 意味着滚动条始终可见,即使不需要。如果您将面板高度设置为 160 像素并且滚动窗格更大,您会看到滚动条(因为它总是如此)但没有滚动框(因为实际上没有可滚动的内容)。

滚动条上的上下按钮即使没有可滚动的东西也是可以点击的,这有点奇怪。在这种情况下,通常它们应该是灰色的。也许在 JScrollPane 中有一些额外的参数...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    相关资源
    最近更新 更多