【发布时间】:2013-07-10 21:24:36
【问题描述】:
如何让JTextArea 滚动,以便在用户键入更多文本时始终显示插入符号的位置?
这对我来说似乎是一个愚蠢的问题,我觉得以前一定有人问过这个问题,但我已经搜索并找不到答案。
我有一个多行文本区域,嵌入在 JScrollPane 中。如果用户一直打字直到填满文本区域,最终插入符号会变得不可见(在显示的区域下方)并且用户无法看到他正在输入的内容。这似乎是默认行为,这似乎很奇怪。我需要做些什么来确保文本区域始终滚动到插入符号所在的行。
我应该提到在文本区域中启用了换行。
【问题讨论】:
-
你能发一个SSCCE你试过的东西吗?
-
您要求的实际上是默认行为 :-) 您一定在代码中做错了 :-) 我的猜测是,您必须在代码中使用
setBounds()/setXxXSize() 方法。看看这个code example,看看这是否不是默认行为。 -
不发布源代码,因为它是我继承的一团糟。谢谢好牛!我希望有人会告诉我,我想要的行为是默认行为。在您的代码示例中,我看到: notesArea = new JTextArea(10, 10); notesScroller = new JScrollPane(); ... notesScroller.setViewportView(notesArea);通过调用 setViewportView(textArea) 将文本区域与滚动条关联或将文本区域传递给构造函数之间有区别吗?
-
@SteveCohen :请注意,我是如何向您发送此消息的,带有@符号和您的姓名,以前无法收到您的消息,因为没有相同的,只需访问此页面偶然地 :-)。实际上这两个东西之间没有区别,我想,它们都是一样的,我只是更喜欢
setViewportView(...),来做我的事情:-)。是的,对于 cmets 中的代码,您可以将内容包含在 Acute 键之间(在 Escape 下,不按 Shift(使用 Shift 变为波浪号)),就像这个灰色区域I AM CODE :-)。其余的你最欢迎并保持微笑:-) -
@nIcEcOw - 再次感谢您,nIcEcOw。 setRows(), pack() 谁会喜欢它。我们也没有打电话。如果您将其放在答案中,我很乐意为此给予您信任。问题解决了!
标签: java swing scroll jscrollpane jtextarea