【问题标题】:How to prevent a lightweight component receive mouse events?如何防止轻量级组件接收鼠标事件?
【发布时间】:2019-10-13 20:37:24
【问题描述】:

我有一些JTextComponents 和一些CaretEvents。我需要禁用所有组件以防止在某些操作后进行用户交互,并且当这些操作完成后重新启用那些JTextComponents 以允许用户再次与 GUI 交互。显然,当用户单击 JTextComponent 时,插入符号侦听器会执行它的操作,我想阻止这种情况。

我目前删除了CaretListeners 以防止这种情况发生,在我的内部操作完成后,我重新添加了那些CaretListeners。

还有其他方法可以防止这种情况吗?比如删除那些组件的MouseEvents 并在以后重新分配?

【问题讨论】:

  • 我需要禁用所有组件以防止在某些操作后进行用户交互 - 如果您可能使用类似 Progress Bar 的东西。这将显示一个模式对话框,阻止用户与表单进行交互,直到进度条关闭。

标签: java swing mouseevent listener event-listener


【解决方案1】:

禁用用户交互的一种方法是不允许文本组件接收程序的焦点:

myTextComponent.setFocusable(false);

然后当您想重新允许交互时,使用明显的true 参数进行相同的调用:

myTextComponent.setFocusable(true);

【讨论】:

  • @user11611653,显然,当用户单击 JTextComponent 时,插入符号侦听器会执行它的操作 - 这仍然会发生,除非文本字段不包含任何文本。移除焦点可防止用户切换到文本字段。它不会阻止用户单击文本字段并更改插入符号的位置(并生成 CaretEvent)。
  • @GhostCat:关于如何进行客户关系的课程。最初的行动至少可以说是严厉的,他们对它的最初反应,甚至他们在元的最初帖子,都非常弱
猜你喜欢
  • 2023-03-31
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多