什麼是java.awt.Component.getName()
用於?在我使用NetBeans構建的應用程序中,它似乎始終是null
。我正在考慮在每個組件中存儲一些幫助文本 - 我不想使用工具提示,我有另一個面板可以顯示幫助文本。什麼是java.awt.Component.getName()和setName()用於?
回答
Component.setName(..)在JDK中主要由外觀實現類用於爲每個組件設置類ID字符串,例如, BasicOptionPaneUI可能會在按鈕組件上調用它以將其名稱設置爲「OptionPane.button」。
的的getName()中的toString()中使用的方法,設置複合/父Component AWT內部和子組件和Swing調試記錄代碼的名稱時。 我強烈懷疑getName()方法也被一些AWT/Swing測試框架使用。
所以,如果你不依賴於任何的getName()的上述用途,您可以嘗試使用它的幫助信息,雖然我不會推薦它。
也許你應該重新考慮你的設計?使用該名稱在加載資源包中的幫助文本的散列映射中進行一些查找?
我還沒有看到它用於框架的任何東西。如果您將組件傳遞給某個方法,那麼它很有用,因此您可以詢問其名稱以決定如何處理它們。此外,許多UI測試框架使用它來允許您在測試腳本中按名稱引用組件。雖然我沒有看到任何理由不能使用它來獲取幫助文本。
我們使用它的機器人/ UI測試。 – 2008-10-22 19:41:47
我們還將其用於機器人/ UI測試。 – Jason 2017-11-04 13:00:42
而且,因爲我覺得java.awt.Component中是X一個重量級的對象,像xwininfo和XWD程序可能允許您通過名字來指定。
我只是一個JFrame試了一下,和setName沒有設置窗口的名稱,該窗口是通過我在構造函數中傳遞的字符串命名。但是我沒有任何awt-only示例代碼來測試,所以我可能會錯在上面寫的內容。
Herman Lintvelt的答案最終成爲我的應用程序的正確答案。
我創建了一個名爲HelpText.properties的資源包。它包含名稱=值對。我使用名稱=值對中的「名稱」將每個組件的setName()d。然後我使用框架的getGlassPane()捕獲所有鼠標移動。當鼠標移過指定的組件時,它將在包中查找名稱,如果可用則顯示幫助,並將鼠標移動轉發到實際組件。
- 查看here瞭解如何使用玻璃板。
- Jan Newmarch的web page on using resource bundles非常有幫助。
- Kevin Riff的response幫我弄清楚如何找到我的資源包。
呼。只有2天左右的時間。我終於開始習慣到Java :)
很高興我能幫到你。享受Java。 – 2008-10-22 21:58:23
的component.getName()
方法大多與聽衆使用。如果您設置組件的名稱(component.setName(name)
),則可以使用Listener
的方法調用該特定組件。
例子:
public void someMethodOfsomeListener(SomeEvent e){
if (e.getComponent().getName().equals(component.getName())
//do stuff...
}
請注意,你必須明確地設置組件的名稱,否則將返回null
。
如果您在偵聽器中有`component`引用,那麼您也可以使用`e.getComponent()== component`,這個錯誤不太容易出錯。我會考慮使用多個監聽器。 – palacsint 2015-03-31 11:54:35
我用它來處理一個單獨的類中的監聽器。我收到作爲參數組件包含我的object.addListener不作爲容器,但作爲包含該對象的類。感謝Vivavinyl爲第一個設定名稱的提示。這是有用的和工作。
這是我使用的getName()爲:
Frame[] frames = JFrame.getFrames();
for (int i = 0; i < frames.length; ++i) {
//get the frame
Frame frame = frames[i];
if (frame.getName().equals(frameName)) {
//make the frame visible
frame.setVisible(true);
//focus the frame
frame.requestFocus();
//found
return;
}
}
FEST使用組件的名稱來標識它的測試用例。
...我已經尋找越來越名字 很多答案,我認爲這是唯一的簡單的解決方案
public static void main(String[] args) {
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
String name = actionEvent.getSource().toString();
UserReaction(ObjectName.getComponentVariableName(name), "null");
}
};
Button calculate_btn = new Button("Calculate");
calculate_btn.setName("Calculate");
calculate_btn.addActionListener(actionListener);
}
private static void UserReaction(String objectName) {
if (objectName.equals("Calculate")) {
//do something;
}
}static public String getComponentVariableName(String name) {
String res = (name.substring(name.indexOf("[") + 1));
res = res.split(",")[0];
return res;
}
- 1. enCapsa - 它是什麼和用於什麼?
- 2. 什麼是#和:用於Qbasic?
- 3. 運行setName和getName後,爲什麼我的name字段爲空?
- 4. Magento:在類別爲什麼setName不起作用
- 5. 什麼是用於
- 6. 什麼是+ =用於?
- 7. 什麼是用於
- 8. 什麼是(;;)用於?
- 9. 什麼是用於
- 10. 什麼是用於
- 11. 什麼是buildOptions和preserveCompilationContext用於?
- 12. JavaScript:什麼是.extend和.prototype用於?
- 13. 什麼是node.js和AMD API用於?
- 14. 什麼是com.itextpdf.test。** - 用於什麼類?
- 15. 什麼是applescript,它用於什麼?
- 16. printf,說,getName setName
- 17. 什麼是HashMap和ArrayList,它們對於什麼有用?
- 18. 究竟是什麼ObjectFactory是什麼,它用於什麼?
- 19. 什麼是演員和任務是關於什麼?
- 20. 什麼是sys/user.h用於?
- 21. 什麼是用於swarminject?
- 22. 什麼是[super awakeFromNib];用於?
- 23. 什麼是iframe用於?
- 24. 什麼是Switch類用於?
- 25. 什麼是Adapter.getItem()用於?
- 26. 什麼是HAVE_PSI_INTERFACE宏用於?
- 27. 什麼是_references.js用於?
- 28. 什麼是robots.txt.dist用於?
- 29. 什麼是CookieAuthenticationOptions.AuthenticationType用於?
- 30. 什麼是#pragma用於?
謝謝赫爾曼 - 請參閱我的答案,瞭解我是如何做到的。 – JohnnyLambada 2008-10-22 21:56:04