java - 向 JTextArea 添加垂直滚动条
问题描述
我正在制作一个简单的 GUI,它有一个 JTextArea,我可以在其中粘贴一个字符串。当字符串太长时,JTextArea 会填满,我可以看到文字低于我为文本区域设置的界限。我想在这个文本区域添加一个垂直滚动条。
public class GUI implements ActionListener {
private static JTextArea fileContents;
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setSize(700, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
panel.setLayout(null);
fileContents = new JTextArea();
fileContents.setBounds(175, 75, 275, 275);
panel.add(fileContents);
JScrollPane sp = new JScrollPane();
sp.add(fileContents, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
panel.add(sp);
进行此设置时出现错误。
Exception in thread "main" java.lang.IllegalArgumentException: illegal component position
at java.desktop/java.awt.Container.addImpl(Container.java:1111)
at java.desktop/java.awt.Container.add(Container.java:489)
at harness.GUI.main(HarnessGUI.java:60)
解决方案
此代码有效:
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setSize(700, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.setVisible(true);
panel.setLayout(null);
fileContents = new JTextArea();
JScrollPane sp = new JScrollPane(fileContents);
sp.setBounds(175, 75, 300, 300);
panel.add(sp);
你有两个问题:
- 如果
fileContents
添加到sp
添加到panel
,则不需要添加fileContents
到panel
。 - 使用s 时
JScrollPane
,您应该Component
只在构造函数中添加 s,JScrollPane(Component view)
而不是在add()
方法中添加 s。
推荐阅读
- discord - 消息未定义?
- python - 使用 Seaborn 反转色调类别的顺序和颜色
- simd - SIMD (AVX2) - 将 uint8_t 值加载到多个浮点 __m256 寄存器
- python - 数据集中的扩展收缩
- python - 无法使用 BeautifulSoup 登录whalewisdom 网站
- angular - Angular 8:处理 404s 403s 500s 和 1 个组件中的其他错误的最佳方式
- angular - $localize 在 Angular 中使用条件语句
- database - 一张发票给多个访问中的客户
- java - Java Brick Breaker Game 桨留下痕迹
- c# - .Netstandard 中的 PictureBox.Handle