2010-02-17 18 views
6

El código es así:setBorder en JTextField no funciona? o lo hace?

JTextField txt = new JTextField(); 
txt.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.red)); 

Sin embargo, el campo de texto está ignorando mi llamada a setBorder. Sin cambios de ningún tipo.

tuviera que reemplazarlo con un JLabel (por ejemplo)

JLabel txt = new JLabel(); 
txt.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.red)); 

me gustaría ver el borde rojo.

¿Alguien me puede decir por qué? O incluso mejor me explique cómo agregar un borde en el JTextField?

+0

Eso "debería" funcionar. ¿Estás utilizando JTextField o una clase personalizada que amplíe JTextField? ¿Qué más estás haciendo con JTextField? ¿Estás estableciendo el límite en otro lado? – Pace

+0

Tarda dos segundos para probar si lo hace o no. Honesto. O aceptas mi palabra o escribes una pequeña prueba y miras por ti mismo. De todos modos, otros bits de información son: El uimanager está configurado en Windows UIManager.setLookAndFeel ("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); y no trabajo en una clase que amplíe JTextField. Estoy usando el JTextField mismo. –

+0

"para probar" El comportamiento dependerá de PL & F, la versión de PL & F, la plataforma, la versión de la plataforma y posiblemente la configuración. No es tan fácil de probar. Sería más fácil de probar si incluyese un ejemplo compilable. –

Respuesta

6

Salida this explanation/recommendation from the Java API

En general, cuando se desea establecer una frontera en un componente Swing estándar que no sea JPanel o JLabel, que Recomendamos colocar el componente en un JPanel y conjunto el borde en el JPanel.

Entonces ... debe anidar su JTextField en un JPanel o JLabel, y poner el borde en el JPanel o JLabel. Voila!

+5

Heh. Creo que cambiar una línea de documentos API es más fácil que arreglar una bola de código para usar 'BorderUIResource'. –

Cuestiones relacionadas