gpt4 book ai didi

java - Swing 应用程序框架@Action 注释?做什么的?

转载 作者:行者123 更新时间:2023-12-04 06:59:47 26 4
gpt4 key购买 nike

我实际上是在桌面应用程序上使用 Swing 应用程序框架,并充分利用 session 状态持久性和资源管理器(非常适合全局化)

现在我一直在测试@Action 注释功能,实际上我没有看到比不使用它有任何优势。
官方文档主要列出了这些优点:

you can conveniently put all the relevant visual cues and the event-processing logic for a component in one place.



是的,这个存储视觉提示的地方就是资源包。 (可与资源管理器一起使用)
是的,一个地方的事件处理逻辑在一个通用方法中。但无需注释方法以使其对多个事件通用。

Another convenient benefit of using Action interfaces is that you can reuse the same action across multiple UI components. GUIs often provide multiple ways to accomplish a task



是的,显然事件处理对于不同的事件是通用的,但是再次使用 @Action 注释不需要从不同的 Action 监听器方法调用通用方法。

我看不出写这个有什么好处:
 openButton.setAction(actionMap.get("open"));
// NOI18N

@Action public void open() {
// processing logic
}

代替:
 openButton.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
openButtonActionPerformed(evt);
} });

private void openButtonActionPerformed(java.awt.event.ActionEvent evt) {
// processing logic
}

提到使用后者,我将我的方法保持为私有(private),这更整洁,并且我还控制添加监听器的特定组件(因为每个组件都将拥有自己的资源,而不是共享相同的视觉提示!)

有人对使用 @Action 注释真正感兴趣吗?

最佳答案

该文档提供了您问题的答案。

https://docs.oracle.com/javaee/6/api/javax/xml/ws/Action.html

我认为使用@Action 而不是匿名ActionListener 的优点是@Action 是一个非常好的和方便的框架钩子(Hook),它可以很容易地为 Action 本地化诸如图标、文本或助记符之类的东西。此外,如果您的 @Action 注释方法返回一个 Task 对象,则框架会适本地处理不应在 EDT 上运行的执行代码。

如果不使用 @Action 框架,您必须非常小心地本地化您的 ActionListener,并且要更加小心如何管理不应在 EDT 上运行的代码(如果您想要响应式 UI)。

在返回 Task 的方法上使用 @Action 是该框架提供的非常强大的便利。

关于java - Swing 应用程序框架@Action 注释?做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com