2013-06-19 58 views
1

我有一個涉及Java和Swing的半理論問題。 Swing組件包含兩個選項來響應用戶:setActionaddActionListener。這些分別屬於ActionActionListener對象。我應該在Swing中使用setAction或addActionListener嗎?

我的問題是:我應該用哪種方法,setActionaddActionListener?它們又有什麼不同?

+0

@lifus謝謝,關閉。編輯:這實際上不是重複的。基於2票存在的事實,請不要投票結束。 – sdasdadas

+1

'setAction(action)'也將在內部調用'addActionListener(action)' – DannyMo

+3

@lifus該鏈接與JSF相關... – Reimeus

回答

3

個人的偏好是儘可能使用Action(這樣做並不總是有意義的)。主要原因有:

  • 簡化代碼。您不會以帶有多個if-else語句的行數爲100的actionPerformed方法結束。 Action包含對特定類的特定操作。
  • 它們是自包含的(這與前一點有關)。所有需要配置UI元素的信息都是自包含到Action,使設置更容易和更快,更不用說一致;)
  • 它們是可重複使用的,菜單,按鈕,鍵綁定,文本字段。
  • 它們是可擴展的。您可以創建一組動作的基本概念和擴展底座提供的個人行爲的實施要求(我做了很多與鍵綁定)

恕我直言

+0

謝謝,接受,因爲它提供了一點動機(而不僅僅是文檔)。 – sdasdadas

2

根據http://docs.oracle.com/javase/tutorial/uiswing/misc/action.html

An Action object is an action listener that provides not only action-event handling, but also centralized handling of the state of action-event-firing components such as tool bar buttons, menu items, common buttons, and text fields. The state that an action can handle includes text, icon, mnemonic, enabled, and selected status.

縱觀鏈接文檔和this answer,似乎一個理由使用Actions可能會嘗試使用相同的動作上幾個對象

+0

感謝您的回答 - 我接受了其他答案,因爲這與上面發佈的副本的答案非常相似。另外,另一個提供了一點現實世界的動機。 – sdasdadas

+0

@sdasdadas mk,無論對你有用 – Daniel

相關問題