gpt4 book ai didi

java - JTextArea 垂直滚动条在不需要时显示

转载 作者:行者123 更新时间:2023-12-01 19:28:55 26 4
gpt4 key购买 nike

我的 JTextArea 中需要一个垂直滚动条,仅在需要时才出现,为此我知道我需要根据需要使用垂直滚动条。但滚动条一直显示,如下所示:

enter image description here

即使显然不需要。我做错了什么?

// make top panel where output from the menu selections will appear
topP = new JPanel(new BorderLayout());
topP.setSize(new Dimension(500,150));
// make default text message to be displayed in top panel
output = new JTextArea("Output printed here...", 20, 20);
// styles the text in the textarea
output.setForeground(Color.BLUE);
output.setFont(new Font("Times New Roman", Font.BOLD, 20));
topP.add(output, BorderLayout.NORTH); // add default text to the top panel
right.add(output);

// here's the scrollbar guys
top = new JScrollPane(output); // applies to the textarea
top.setPreferredSize(new Dimension(500,150));
top.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
top.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
topP.add(top, BorderLayout.NORTH);

最佳答案

看看documentation对于 JTextArea。如果向下滚动到构造函数摘要部分,您将看到以下内容:

JTextArea​(String text, int rows, int columns) Constructs a new TextArea with the specified text and number of rows and columns.

这与您正在使用的构造函数相同:

output = new JTextArea("Output printed here...", 20, 20);

通过指定行和列,您可以有效地告诉 JTextArea 它必须具有一定的大小,而滚动 Pane 只是通过显示滚动控件来响应您的规范。这些滚动控件根据您要求的行数和列数显示,而不是根据文本区域中可见文本的数量显示。

如果构造 JTextArea 时未指定行和列,则不会有任何滚动条。由于您要设置文本区域的大小,因此指定行和列无论如何都是多余的。只是不要这样做。

注意:您应该避免设置 Swing 组件的绝对大小。仅设置首选大小,当您调用 pack() 时,Swing 将尝试尽可能适应您的规范。当您指定绝对大小时,您的 UI 在不同平台上或当用户调整框架大小时可能看起来非常糟糕。

关于java - JTextArea 垂直滚动条在不需要时显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59279439/

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