java - FocusLost 在 menuaction 之后调用

标签 java swing

我有一个带有快捷键的 MenuItem,用于临时保存 JTextFied 的数据并打印它

保存功能在 JTextField 的 FocusLost 事件上调用,打印通过 MenuItems actionListener 调用,并在我单击 MenuItem 以及按下菜单项的快捷键(例如:f1)时触发

问题是,当我直接按 f1(菜单项的快捷方式)时,Textfied 的 focusLost 事件仅在菜单项执行其操作后才会触发,而当我转到菜单并按下时,focuslost 首先被触发其次是菜单的操作

有没有办法强制 Focuslost,这样即使使用快捷键,focusLost 事件也会先被触发

尝试使用 requesfocusinWindow、setText(在其他演示文本字段上执行只是为了强制失去焦点)

最佳答案

1) 我认为这在编程语言中是不可能的,更多关于 AWT Focus Subsystem 的理论和 How to Use the Focus Subsystem ,

2) 你必须将这个 Save Processes 重定向到 Backgroung Task,在此之前你可以检查 JMenu 和它的 JMenuItem 是否被选中,因为此检查仅使用 ButtonModel,否则不要这样做,因为您的 GUI 必须等待此过程

3) 另一种选择是将 JComponents 中的周期性基值保存到某些 Array 中,在那里您可以检查值是否被更改,必须检查所有更改/从后台任务中保存,对 Swing GUI 没有任何影响

4) 如何创建像 Timer 这样的东西的最简单方法是将一些逻辑包装到 Runnable#Thread 中,由 Thread.sleep(int) 延迟但只在内部Runnable#Thread

关于java - FocusLost 在 menuaction 之后调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8346123/

相关文章:

java - 如何在 Java 应用程序中为 SQL Server 捕获/编码特殊字符?

java - 从 JMenuItem java 打开一个弹出窗口

java - 如何在 Swing 上将标签控件绑定(bind)到条目控件

java - Swing 到 Javafx 转换

java - 线程、定时器、等等来递增变量

java - Java格式错误的url异常,用于简单的url

java - 尝试 findViewById 时抛出 NullpointerException

单击 Java Swing 菜单项

Java 键绑定(bind)加键

java - 将项目添加到 Eclipse 文本查看器上下文菜单