当组件超出文本区域内时启用 ScrollPane

Enable ScrollPane when components exceed inside a text area

首先可能有些人已经问过这个问题。但是,我确定我做不到 google。无论如何,我有一个 scrollPane,它有一个 textArea 的 viewPortView。我的问题是,当我在 textArea 中插入大量组件时,我想显示我的滚动窗格。我该怎么做?我不知道,我也不是 Javax Swing 的专家。 代码如下:

textArea = new JTextArea();
scrollPane = new JScrollPane();
   textArea.setBounds(0,50,520,550);
   textArea.setBackground(Color.DARK_GRAY);
   scrollPane.setBounds(textArea.getBounds());
   scrollPane.setViewportView(textArea);

感谢您的帮助!

My question is I would like to show my scrollpane when i insert numerous components inside my textArea.

文本区域显示文本,而不是组件。当您实际向文本区域添加文本时,滚动条会自动出现。

textArea.setBounds(0,50,520,550);

不要使用 setBounds。 Swing 旨在与布局管理器一起使用。特别是 JScrollPane 只有在您使用布局管理器时才能正常工作。

//textArea = new JTextArea();
textArea = new JTextArea(5, 20);

当您创建 JtextArea 时,请使用上述代码。这将允许文本区域确定其自己的首选大小。然后,当您添加超过 5 行文本时,就会出现滚动条。

阅读 How to Use Text Areas 上的 Swing 教程部分,了解更多信息和工作示例。为所有 Swing 基础知识准备一份 link 教程。

仅供参考,

如果文本区域有多行,滚动条默认滚动到文本区域的末尾。要使文本区域中的行保持换行并将滚动条保持在文本区域的顶部,以下代码将有所帮助

    textArea .setWrapStyleWord(true);
    textArea .setLineWrap(true);
    DefaultCaret caret = (DefaultCaret) textArea .getCaret();
    caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);