【问题标题】:JPanel within JScrollPane within JPanel ignoring horizontal wrapJPanel 内的 JScrollPane 内的 JPanel 忽略水平换行
【发布时间】:2023-03-07 17:43:01
【问题描述】:

我有一个 JPanel,其中包含一个 JScrollPane,该 JScrollPane 包含一个 JPanel:

masterPanel.add(buttonPanel, BorderLayout.NORTH);
inner.setLayout(new BorderLayout());
inner.add(infoPanel, BorderLayout.NORTH);
inner.add(writingPanel, BorderLayout.CENTER);
beholder = new JScrollPane(inner);

masterPanel.add(beholder, BorderLayout.CENTER);

我希望 beholder 成为 JScrollPane 以便在滚动 beholder(内部滚动窗格)时始终显示按钮面板。这一切都很好,但问题是旁观者内部的面板不换行。所以我在 infoPanel 中有很长的一行文本,导致了非常长的、不受欢迎的水平滚动。

如果我只是将最后一行更改为添加 inner 而不是 beholder,它可以正常工作(正确换行),但是当用户向下滚动时,按钮面板不会停留在顶部。

我完全被困住了。基本上我的问题是如何让 JScrollPane 内的面板正常自动换行。

问题在于水平环绕。即使我将 beholder.setPreferredSize() 设置为非常低的 x 和 y 维度,它也会完全忽略 x 维度,即使它似乎正常服从 y 维度。

【问题讨论】:

  • 您使用什么组件在信息面板中显示文本?

标签: java swing scroll jpanel jscrollpane


【解决方案1】:

我认为Scrollable Panel 会帮助你。

【讨论】:

  • 可能我不明白怎么用,但是根本不行。实际上它现在双向拉伸组件
  • 你玩过这个演示吗?您可以分别控制垂直和水平的拉伸。也许我不明白这个问题,而且你没有发布 SSCCE,所以我看不到你的确切问题。
【解决方案2】:

由于某种原因,这个问题通过调用解决了:

inner.setPreferredSize(inner.getPreferredSize());

这将导致发生换行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多