2010-01-13 70 views
2

我實際上在桌面應用程序上使用Swing應用程序框架,並充分利用會話狀態持久性和資源管理器(非常適合全球化)Swing應用程序框架@Action註釋?做什麼的?

現在我一直在測試@Action註釋功能,沒有看到任何優勢,而不是使用它。 官方文檔列表這些主要優點:

您可以方便地把所有的 相關的視覺線索和 事件處理邏輯組件 在一個地方。

是這個地方儲存視覺線索是資源包。 (可以與資源管理器被使用) 是在一個地方的情況下,處理邏輯是一種常見的方法之內。但不需要對方法進行註釋以使其在多個事件中共同使用。

使用 操作界面的另一個便利的好處是,你可以 重複使用多個 UI組件同樣的動作。圖形用戶界面通常提供 多種方式來完成任務

是,明明事件處理可通用於不同的事件,但再次使用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 
} 

一提的是採用後者,我把我的方法私有的,這是整潔,我也保持了特定成分的控制越來越添加偵聽(因爲每個人都會有自己的資源,而不是共享相同的視覺線索!)

任何人都找到了真正的我使用@Action註釋有趣嗎?

回答

1

當我使用NetBeans每一個標有@Action方法將在NetBeans GUI可自動對部件設置的操作。

+0

我明白了。但是,爲什麼要使用註釋爲了在NetBeans編輯器中設置組件的操作而不是(仍然使用NetBeans編輯器)向組件添加事件監聽器?有什麼優勢? – user225486 2010-01-14 13:41:41

+0

嗯,他們不在那裏,所以有些事情可以自動爲你做,併爲你節省一些鍋爐代碼?我暫時還沒有使用它,所以我不記得框架+ netbeans爲你做了什麼 – willcodejavaforfood 2010-01-14 13:52:05

+0

我沒有看到使用註釋自動生成的代碼,這些註釋不能由NetBeans編輯器自動生成。 真的,我沒有看到使用動作註釋的優勢。 – user225486 2010-01-18 22:29:12

2

文檔提供的回答你的問題。

http://java.sun.com/developer/technicalArticles/javase/swingappfr/#actions

我覺得優勢,使用@Action而不是匿名的ActionListener是@Action是一個很不錯的,方便鉤到框架,這使得它很容易本地化的東西的動作,如圖標,文本或助記符。此外,如果您@Action註釋的方法返回一個任務目標,框架適當的處理執行代碼,不應該在美國東部時間運行。

如果不使用框架@Action,您必須非常小心地本地化您的ActionListeners,並更加小心如何管理不應該在EDT上運行的代碼(如果您需要響應式UI)。

對返回任務的方法使用@Action是這個框架提供的一個非常強大的方便。