【问题标题】:Swing JScrollPane fill one dimension and scroll anotherSwing JScrollPane 填充一个维度并滚动另一个维度
【发布时间】:2017-12-16 02:10:36
【问题描述】:

我有相对较大的文本,由单个 JLabel 表示。文本被添加到JPanel 组件中,带有GridBagLayout

我希望文本在 x 轴上填充面板内的所有可用空间,并仅在 y 轴上提供滚动。此外,当面板被缩放时,滚动和文本对齐方式应该相应地改变。

因此,请考虑以下代码示例:

JPanel panel = new JPanel(new GridBagLayout());
JLabel desc = new JLabel("largelarge text");
JScrollPane scrollPane = new JScrollPane(desc, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
panel.add(scrollPane, gbc constraints here);

有什么建议吗?

【问题讨论】:

  • 考虑使用不可编辑的 JTextArea(如果文本全部使用一种字体)或 JEditorPane(如果文本是 HTML),而不是 JLabel。

标签: java swing user-interface jscrollpane


【解决方案1】:

我希望文本在 x 轴上填充面板内的所有可用空间,并仅在 y 轴上提供滚动

您需要创建一个自定义面板并实现Scrollable 接口。

您将实现getScrollableTracksViewportWidth() 方法以返回“true”,并实现getScrollableTracksViewportHeight() 方法以返回“false”。您还需要实现接口的其他方法以提供合理的值。

或者,您可以使用Scrollable Panel,它实现了具有默认行为的所有Scrollable 接口方法,并提供了允许您更改行为的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多