¿Para qué se utiliza java.awt.Component.getName()
? Siempre parece ser null
en las aplicaciones que construyo con NetBeans. Estoy pensando en almacenar algún texto de ayuda por componente en él; no quiero usar la información sobre herramientas, tengo otro panel donde mostraré el texto de ayuda.¿Para qué se utilizan java.awt.Component.getName() y setName()?
Respuesta
Component.setName (..) se utiliza principalmente en el JDK por las clases de implementación de apariencia para establecer cadenas similares a ID para cada componente, p. BasicOptionPaneUI podría llamarlo en un componente de botón para establecer su nombre en "OptionPane.button".
El getName() se utiliza en los métodos toString() al establecer los nombres de los componentes secundarios dentro de un Componente compuesto/primario y en el código de registro de depuración AWT y Swing. Sospecho que el método getName() también es utilizado por algunos marcos de prueba AWT/Swing.
Así que si no depende de ninguno de los usos anteriores de getName(), puede intentar usarlo para sus mensajes de ayuda, aunque yo no lo recomendaría.
¿Quizás debería reconsiderar su diseño? Use el nombre para hacer una búsqueda en un hashmap que carga el texto de ayuda de un paquete de recursos.
No lo he visto usado por el framework. Es útil si tiene componentes que se pasan a un método para que pueda preguntar su nombre para decidir cómo manejarlos. Además, muchos marcos de prueba de UI usan esto para permitirle referirse a los componentes por su nombre en los scripts de prueba. No obstante, no veo ninguna razón por la que no puedas usarlo como texto de ayuda.
La usamos para las pruebas de robot/IU. –
También lo usamos para pruebas de robots/UI. – Jason
Además, como creo que java.awt.Component es un objeto pesado en X, programas como xwininfo y xwd podrían permitirle especificarlo por su nombre.
Acabo de probarlo con un JFrame, y setName no configuró el nombre de la ventana, la ventana fue nombrada por la cadena que pasé en el constructor. Pero no tengo ningún código de ejemplo solo para probar, así que podría estar equivocado sobre lo que escribí arriba.
La respuesta de Herman Lintvelt fue la correcta para mi aplicación.
Creé un paquete de recursos llamado HelpText.properties. Contiene pares nombre = valor. ConfiguroName() d cada uno de mis componentes con el "nombre" del par nombre = valor. Luego usé un getGlassPane() del marco para capturar todos los movimientos del mouse. Cuando un mouse se ejecuta sobre un componente nombrado, busca el nombre en el paquete, muestra la ayuda si está disponible y reenvía el movimiento del mouse junto con el Componente real.
- Mire here para saber cómo utilizar el cristal.
- Jan Newmarch's web page on using resource bundles fue muy útil.
- Kevin Riff's response me ayudó a encontrar la manera de encontrar mi paquete de recursos.
Whew. Solo 2 días de dinking alrededor. Finalmente estoy empezando a acostumbrarme a Java :)
Me alegro de poder ayudar. Disfruta de Java. –
El método component.getName()
se utiliza principalmente con oyentes. Si configura el nombre de un componente (component.setName(name)
) puede llamar a ese componente específico desde un método de Listener
.
Ejemplo:
public void someMethodOfsomeListener(SomeEvent e){
if (e.getComponent().getName().equals(component.getName())
//do stuff...
}
Tenga en cuenta que usted tiene que establecer explícitamente el nombre del componente, en caso contrario devolverá null
.
Si tiene la referencia 'component' en el oyente, puede usar' e.getComponent() == component' también, que es menos propenso a errores. Consideraría usar múltiples oyentes también. – palacsint
Los componentes también pueden tener el mismo nombre. No confunda la prueba anterior para la igualdad de componentes. – Jason
Lo uso para manejar oyentes en una sola clase aparte. Recibo como parámetro el componente que contiene mi object.addListener no como un contenedor sino como la clase que contiene ese objeto. Gracias a Vivavinyl por el consejo de poner el nombre primero. Fue útil y funcionó.
Esto es lo que yo uso getName() para:
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 utiliza el nombre de un componente para identificarla en los casos de prueba.
He buscado muchas respuestas para obtener el nombre y creo que esta es la única solución fácil
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;
}
Esto no responde la pregunta en absoluto? –
- 1. ¿Para qué se utilizan parches en SVN?
- 2. ¿Para qué se utilizan las declaraciones dispinterface?
- 3. JavaScript: ¿Para qué se utilizan .extend y .prototype?
- 4. ¿Para qué se utilizan session_id, session_regenerate_id y session_name?
- 5. ¿Qué son los corchetes angulares para los valores de los argumentos y para qué se utilizan?
- 6. ¿Para qué se utilizan los diferentes formatos de archivo gettext?
- 7. ¿Para qué se utilizan los diferentes directorios en @INC?
- 8. ¿Para qué se utilizan los componentes fuertemente conectados?
- 9. ¿Para qué se utilizan los archivos .rc2 en Visual Studio?
- 10. ¿Para qué se utilizan los diferentes formatos de NameID?
- 11. ¿Se utilizan llaves en Lua?
- 12. ¿Qué algoritmos se utilizan en Clojure, Haskell (y otros idiomas) para STM?
- 13. ¿Para qué se utilizan las variables "catálogo" y "esquema" de la anotación JPA @Table?
- 14. ¿Para qué se utilizan la captura y el lanzamiento en Ruby?
- 15. ¿Para qué se utilizan las diferentes versiones de exec en C y C++?
- 16. ¿Para qué se utilizan las memorias intermedias Apache Thrift y Google Protocol?
- 17. ¿Por qué no se utilizan los archivos PHP para (personalizado) CSS y JS?
- 18. ¿Qué hace un arquitecto de software y qué programas utilizan?
- 19. Cómo determinar qué JAR se utilizan en una aplicación
- 20. Qué ORM es el mejor cuando se utilizan procedimientos almacenados
- 21. MySQL: ¿cómo veo qué archivos de configuración se utilizan?
- 22. ¿Qué herramientas se utilizan para escribir pruebas de aceptación para aplicaciones web Python (django)?
- 23. ¿Por qué OpenGL tiene un plano de recorte de lejos, y qué modismos se utilizan para hacer frente a esto?
- 24. ¿Qué utilizan los navegadores de Internet para representar?
- 25. ¿Cómo se utilizan rowTemplate y detailTemplate juntos en KendoUI?
- 26. ¿Cómo y dónde se utilizan las anotaciones en Java?
- 27. ¿Qué framework web utilizan sitios como Producteev y Trello?
- 28. ¿Qué IDE utilizan los programadores CLISP?
- 29. ¿Qué frameworks de PHP utilizan las corporaciones?
- 30. Qué fuente y tamaño se utilizan en Windows 7 File Explorer Tree
Gracias Herman - vea mi respuesta a continuación para saber cómo lo hice. – JohnnyLambada