我试图开发不使用JTextArea的滚动条的编辑器,因此内的文本,如果文本太长,以适应JTextArea中应该分裂成更小的子可能在JTextArea中内编辑中没有显示垂直滚动条因为通过使用setLineWrap和setWrapStyleWord很容易摆脱水平方向。我曾尝试使用垂直滚动条adjusmentListener来监听其更改,但它不起作用,因为在业务逻辑结束时激活了jtextarea append和setText方法,所以我尝试使用多线程和SwingWorker来调用这些方法,但也不起作用。我也试图调用重绘,重新验证和更新方法,没有希望。请帮助我通过此问题并提前致谢。如何适应的JTextComponent
回答
谢谢Hovercraft和Robin我知道了,你的回答让我趋向于正确的方式,通过使用JTextArea文档长度传递JTextArea Document Length作为JTextArea.modelToView(),我在“Core Swing:高级编程”参数此方法返回一个Rectangle对象,其协调代表最终的字符协调,然后将这些协调与JTextArea的底角进行比较,以查看最终字符是否达到此底部。
我试图开发不使用JTextArea的滚动条的编辑器,因此如果文本太长的JTextArea应该分裂成更小的子可能在JTextArea中内被编辑内没有表现出垂直滚动条,因为它是通过使用setLineWrap和setWrapStyleWord很容易摆脱水平。
我不知道我完全理解这一点。也许你可以进一步解释?为什么不将JTextarea放置在JScrollPane中?如果它包含的文本大于JTextArea可以显示的文本,那么你期望的行为是什么?
我曾尝试使用垂直滚动条adjusmentListener听它的变化,但它不工作,因为JTextArea中追加和的setText方法在业务逻辑年底启动,所以我试图用多线程和SwingWorker的调用这些方法,但也没有工作。我也试图调用重绘,重新验证和更新方法,没有希望。
如果要在输入的文本提交到文本组件之前进行陷阱输入,请考虑将DocumentFilter设置为与JTextArea关联的Document(PlainDocument)。
作为气垫船已经建议的鳗鱼,你必须看看Document
,DocumentFilter
和/或DocumentListener
接口。
通过调整那些你有过当有人想追加文本显示的内容文本完全控制。例如,您可以在添加新文本之前/之后删除文本的第一部分,从而限制文档中的行数/字符数。
Swing tutorial about textcomponents在Implementing a DocumentFilter部分包含此类示例,其中DocumentSizeFilter
类是您正在查找的类(不属于JDK的一部分,是Swing教程代码的一部分)。正如在示例代码中已经建议作为注释的那样,当附加使文本内容过长的新文本时,可以选择删除文档的第一部分,但由于它被标记为家庭作业,所以我会将其留给您。
谢谢你回复Robin,但是DocumentSizeFilter需要手动指定最大字符数,所以如果窗口被改变大小或改变了字体大小,ScrollBar会再次出现,我需要得到允许的最大字符数而不显示ScrollBar并且所有的问题都会消失,非常感谢 – muaz 2012-01-15 20:19:39
顺便说一句,这是一个文档阅读器作为术语的项目,而不是作业;)谢谢你Robin – muaz 2012-01-15 20:24:36
我建议看看'JTextArea'('getRows','getColumns', ...)。我很肯定你可以找出一些东西来避免硬编码的最大字符数,并支持动态大小的文本区域 – Robin 2012-01-15 21:13:02
- 1. 最适合JTextComponent
- 2. JTextComponent Keymap
- 3. 非屏幕JTextComponent
- 4. 放的JTextComponent和JComboBox JTable中
- 5. JTextComponent中的字符间距
- 6. 在任何JTextComponent中显示换行符?
- 7. 如何使JTextComponent的插入符跳过选定的文本?
- 8. JTextArea/JTextComponent setText导致崩溃
- 9. JTextComponent:如何更新现有的StyledDocument元素
- 10. 如何在NetBeans IDE中为给定的JTextComponent获取EditorCookie或DataObject?
- 11. 如何适应CAShapeLayer
- 12. 如何适应与SciPy的
- 13. JTextField/JTextComponent中的选择有限吗?
- 14. JTextComponent中的多种字体和样式
- 15. Swing如何适应MVC?
- 16. 如何适应屏幕
- 17. 如何使XVim适应Xcode6.3.2?
- 18. 灰熊如何适应Glassfish?
- 19. 如何使自适应QGridLayout?
- 20. 如何使Spymecached适应net.sf.jsr107cache.Cache?
- 21. 仅将屏幕键盘连接到JTextComponent
- 22. 在JTextComponent中禁用双击选择
- 23. 的Android如何适应TEXTSIZE中的TextView
- 24. 如何在使用新的Java 1.6时改变打印参数JTextComponent print()
- 25. 如何在JTextcomponent的不同插入位置插入多个工具提示?
- 26. 如何适应曲线div内的div?
- 27. 如何适应平凡的指针
- 28. 如何适应div内的内容
- 29. 如何适应iframe中的视频?
- 30. 如何适应幂的直方图matplotlib
非常感谢你*气垫船充满鳗鱼*为回答道:亲爱的我不想要显示JScrollPane的,因为它是家庭作业的前期要求。 – muaz 2012-01-15 03:05:13
但是;要清楚我的问题,如果我需要设置或追加到JTextArea的字符串太长,并且会导致显示垂直滚动条,则此字符串必须分为更短的子字符串 – muaz 2012-01-15 03:06:06
,它们每个都可以设置为JTextArea而不显示垂直ScrollBar,并在JTextArea中连续显示它们以响应诸如按下按钮之类的事件,所以DocumentFilter对此有何帮助?谢谢 – muaz 2012-01-15 03:06:27