【发布时间】:2018-01-25 14:19:28
【问题描述】:
我有一个带有 JScrollPane 的 JFrame,其中包含一个 JTextArea。滚动窗格配置为从不显示水平滚动条,并根据需要显示垂直滚动条。 随着文本区域中文本的增长,最终会出现垂直滚动条,隐藏部分文本区域。我希望滚动条在出现滚动条时根据需要调整其内容的大小。
我发现的一种解决方法是始终显示垂直滚动条,但这看起来不太好,因为它很少需要。
在我的系统(Windows 10)上输入足够多的文本后,下面的代码 sn-p 重现了该问题
import javax.swing.*;
import java.awt.*;
import static javax.swing.ScrollPaneConstants.*;
public class Test {
public static void main(String[] args) {
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(new JLabel("text"));
panel.add(new JLabel("text"));
panel.add(new JLabel("text"));
JTextArea textArea = new JTextArea();
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setText("This text fits");
panel.add(textArea);
JScrollPane scrollPane =
new JScrollPane(panel, VERTICAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER);
JFrame frame = new JFrame("Title");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.getContentPane().add(scrollPane);
frame.pack();
frame.setVisible(true);
}
}
【问题讨论】:
-
I would expect the scrollbar to resize its content as needed when the scrollbar appears.- 这不是滚动窗格的作用。随着添加到滚动窗格的组件大小的增加,滚动条出现。因此,您可以使用滚动条在滚动窗格中向上/向下滚动组件以查看所有组件。我怀疑你真的只希望文本区域上的滚动条所有组件都是可见的,然后当你添加更多文本时,文本区域中的文本会滚动。
标签: java swing jscrollpane jtextarea