java - JTextArea 与 JPanel 内的 JScrollPane 不能很好地配合

标签 java swing user-interface scroll jtextarea

我一直在尝试制作一个 JTextArea,我可以像在 Word 文档中一样编写它;当文本太宽时它会环绕,当文本太高时它会向下滚动)。
到目前为止,当包裹太宽时,包裹效果很好。但是,滚动条不起作用。它确实出现了,但它不会再出现,这意味着无论如何都无法查看 JTextArea 原始尺寸之外的任何内容。
有谁知道我做错了什么?代码如下所示;它是名为 panel 的 JPanel,稍后我将使用它,将其添加到另一个 JPanel,而另一个 JPanel 又添加到 JFrame。

JTextArea text = new JTextArea(rows, columns);
text.setLineWrap(true);
text.setWrapStyleWord(true);
text.setPreferredSize(new Dimension(text.getWidth(), text.getHeight()));
JScrollPane scroll = new JScrollPane(text);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
panel.add(scroll);

最佳答案

工作正常,当我删除 - text.setPreferredSize

import java.awt.Dimension;
import java.awt.HeadlessException;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;

public class ScrollTest extends JFrame {

    public ScrollTest() throws HeadlessException {
        JTextArea text = new JTextArea(5, 20);
        text.setLineWrap(true);
        text.setWrapStyleWord(true);
//      text.setPreferredSize(new Dimension(text.getWidth(), text.getHeight()));

        JScrollPane scroll = new JScrollPane(text);
        scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
        panel.add(scroll);

        this.add(panel);

        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new ScrollTest();
    }
}

关于java - JTextArea 与 JPanel 内的 JScrollPane 不能很好地配合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48746977/

相关文章:

java - 我应该使用什么布局管理器?

java - 当我在 Android 应用程序中使用 Reflection api 时,性能会受到很大影响吗?

java - 如何通过我们的程序在运行时注册新的 JNDI 名称?

Java BufferedImage.getRGB()——坐标越界

c# - .NET TabControl/TabPage 中的选项卡很丑

user-interface - 在窗口调整大小时重新渲染meteor.js?

java - eclipse RCP : check if a job has finished

java - log4j:WARN 找不到记录器的附加程序(运行 jar 文件,而不是 Web 应用程序)

java - 如何设置卡片布局的位置和大小?

java - 如何知道构建是否已完成且没有失败