gpt4 book ai didi

java - 向 JScrollBar 添加滚动锁定按钮

转载 作者:行者123 更新时间:2023-12-04 13:29:04 24 4
gpt4 key购买 nike

背景
希望在 JScrollPane 的角落添加一个滚动锁定按钮不遮挡视口(viewport)内容。下图显示了一个 JScrollPane包裹在 SwingNode在 JavaFX 应用程序中:
Actual
右下角显示一个带有锁图标的按钮,可以切换,这是想要的结果:
Final
注意视口(viewport)最底部的内容——锁定按钮旁边的部分——是如何可见的。 (单击该按钮将模拟按下键盘上的滚动锁定按钮。顶部有一个滚动锁定按钮非常好,如果这样更容易的话。)
问题
JScrollPane API显示如下图:
JScrollPane
启用角落组件似乎还需要添加列标题。标题的添加掩盖了视口(viewport)的一部分,与滚动锁定按钮的高度成正比。这是显示可见列标题的屏幕截图,它隐藏了文档的一部分:
Obscured output
想法
我试过使标题 View 面板透明,但无济于事。
代码SwingNode内的相关代码:

// FlyingSaucer subclass
mView = new HtmlPanel();
mScrollPane = new JScrollPane( mView );
setContent( mScrollPane );

final var lock = new JButton( "X" );
mScrollPane.setCorner( UPPER_TRAILING_CORNER, lock );
mScrollPane.setVerticalScrollBarPolicy( VERTICAL_SCROLLBAR_ALWAYS );

final var header = new JPanel();
header.setPreferredSize(
new Dimension( 12, lock.getPreferredSize().height ) );
header.setOpaque( false );
header.setBackground( new Color( 0, 0, 0, 0 ) );
mScrollPane.setColumnHeaderView( header );
camickr's answer再举一个例子。

您将如何向 JScrollPane 添加按钮的底部(或顶部)角,以便没有视口(viewport)内容被遮挡?
有关的
  • How to make a corner component always visible in a JScrollPane
  • 最佳答案

    我建议使用“包装器”面板来实现您想要的布局。就像是:

    JButton scrollLock = new JButton("...");

    JScrollPane scrollPane = new JScrollPane(...);
    JScrollBar verticalBar = scrollPane.getVerticalScrollBar();

    JPanel verticalPanel = new JPanel( new BorderLayout() );
    verticalPanel.add(verticalBar, BorderLayout.CENTER);
    verticalPanel.add(scrollLock, BorderLayout.PAGE_END);

    JPanel wrapper = new JPanel( new BorderLayout() );
    wrapper.add(scrollPane, BorderLayout.CENTER);
    wrapper.add(verticalPanel, BorderLayout.LINE_END);

    setContent(wrapper);

    关于java - 向 JScrollBar 添加滚动锁定按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66328065/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com