gpt4 book ai didi

java - 滚动 java TextArea 的问题

转载 作者:行者123 更新时间:2023-12-02 08:33:23 26 4
gpt4 key购买 nike

全部,

我在使用 JTextArea 和 JScrollPane 时遇到问题。由于某种原因,滚动 Pane 似乎无法识别文档中的最后一行,并且只会向下滚动到其前面的行。滚动条甚至不会更改为我可以滑动它的状态,直到文档中的行数比 textArea 显示的行数大两行(一旦大一,就会发生这种情况)。

有人遇到过这种情况吗?什么是一个好的解决方案(我想避免在文档末尾添加额外的“空白”行,每次添加新行时都必须将其删除)?

以下是我实例化 TextArea 和 ScrollPane 的方法:

JFrame frame = new JFrame("Java Chat Program");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container pane = frame.getContentPane();
if (!(pane.getLayout() instanceof BorderLayout)) {
System.err.println("Error: UI Container does not implement BorderLayout.");
System.exit(-1);
}

textArea = new JTextArea();
textArea.setPreferredSize(new Dimension(500, 100));
textArea.setEditable(false);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
JScrollPane scroller = new JScrollPane(textArea);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
pane.add(scroller, BorderLayout.CENTER);

这是我用来向文本区域添加新行的方法:

public void println(String a)
{
textArea.append(" "+a+"\n");
textArea.setCaretPosition(textArea.getDocument().getLength());
}

感谢您的帮助,

乔纳森

编辑:另外,作为旁注,使用当前代码,我必须手动向下滚动。我假设 println(line) 方法中的 setCaretPosition(doc.getLength()) 会在输入一行后自动将页面设置到底部...应该是这种情况,还是我需要做一些不同的事情?

最佳答案

问题是 textArea.setPreferredSize(new Dimension(500, 100));

删除它。设置滚动 Pane 的 perferredSize 或框架的大小

关于java - 滚动 java TextArea 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2623599/

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