【问题标题】:Getting indirect source of DocumentListener获取 DocumentListener 的间接来源
【发布时间】:2012-08-27 16:02:19
【问题描述】:

我有一个文档监听器,它是间接来源,JTextArea(JTextArea.getDocument().addDocumentListener 等)。

我需要我的听众能够访问 JTextArea,但无需引用。类似于 event.getSource() 来自动作和关键侦听器的东西...我知道侦听器的来源是文档,而不是 JTextArea 本身,但我需要了解它。

有什么建议吗?

【问题讨论】:

    标签: java swing jtextarea documentlistener


    【解决方案1】:

    文档是文本组件的模型,而 Swing 是为单个模型构建的,以便能够被多个视图使用。因此,据我所知,您的问题的答案是否定的,这不能直接完成,因为许多文本组件可以使用相同的 Document。

    你说:

    它应该删除所有多余的文本(复制/粘贴也必须考虑在内)并且应该弹出一个对话框,通知用户限制。我仍然不确定如何实现这一点(考虑到复制/粘贴,没有它可以很容易地完成),所以如果你有想法拍摄,但无论如何我都需要解决这个论点问题......

    我想知道您是否需要对 JTextArea 的输入进行如此多的控制,也许您不应该使用 JTextArea。相反,也许您应该使用 JList 并完全控制如何从该组件中添加和删除行。

    【讨论】:

    • 我可以将 JTextArea 作为附加参数传递给侦听器吗?
    • @John:当然可以。但是你在你的问题中说你不想使用引用。我很好奇你做这一切的动机。为什么需要 JTextArea?
    • 文档侦听器应该确保 JTA 中存在不超过 个单词换行的文本行,并且我将在其中和每个高度(或行号)上进行行号检测更改,它将必须运行一个方法来检查所有组件是否仍在其范围内(JTextArea 只是具有框布局的 JPanel 中的众多组件之一)。
    • 超过行数会怎样?
    • 它应该删除所有多余的文本(复制/粘贴也必须考虑在内)并且应该弹出一个对话框通知用户限制。我仍然不确定如何实现这一点(考虑到复制/粘贴,没有它可以很容易地完成),所以如果你有想法拍摄,但无论如何我都需要解决这个论点问题......
    猜你喜欢
    • 2013-05-13
    • 2017-11-25
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 2013-07-03
    相关资源
    最近更新 更多