gpt4 book ai didi

java - 垂直 JScrollPane 切断了它的 child 的右侧

转载 作者:行者123 更新时间:2023-11-29 07:39:01 25 4
gpt4 key购买 nike

首先,我们有一个JPanel。它的宽度可以根据其环境和背景而变化。它以垂直顺序包含一些组件(例如 JLabels,为简单起见)。此组件的某些内容宽度太大而无法显示:

Overflow with a JPanel

在我们有很多项目之前,这非常有效。因此,我们将面板放入带有 HORIZONTAL_SCROLLBAR_​​NEVER 标志的 JScrollPane 中。这是我的预期结果:

Expected result with JScrollPane

但实际上还有其他事情发生。没有强制第二个带有长文本的标签的大小,并且面板超出了视口(viewport):

Actually happens

最简单的正确解法是什么?

评论

  • 实际上,对于各种各样的组件,这可能会更加复杂,因此使用 JList 不是合适的解决方案。
  • 我使用具有默认设置的默认组件。我想找到一个显式设置最少的解决方案。

最佳答案

您需要为面板实现 Scrollable 接口(interface),以强制面板的宽度适合滚动 Pane 的视口(viewport)。

一个简单的方法是使用 Scrollable Panel .

例如你可以使用:

ScrollablePanel panel = new ScrollablePanel(...);
panel.setScrollableWidth( ScrollablePanel.ScrollableSizeHint.FIT );

编辑:

如果您自己实现 Scrollable 接口(interface),最简单的实现可能类似于:

@Override
public Dimension getPreferredScrollableViewportSize()
{
return getPreferredSize();
}

@Override
public int getScrollableUnitIncrement(Rectangle visible, int orientation, int direction)
{
return 1;
}

@Override
public int getScrollableBlockIncrement(Rectangle visible, int orientation, int direction)
{
return 20;
}

@Override
public boolean getScrollableTracksViewportWidth()
{
return true;
}

@Override
public boolean getScrollableTracksViewportHeight()
{
return false;
}

关于java - 垂直 JScrollPane 切断了它的 child 的右侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32383143/

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