2012-08-13 15 views

Respuesta

8

que sería añadir un borde al campo de texto, algo a lo largo de las líneas de:

Border oldBorder = jTextField.getBorder(); 
Border redBorder = BorderFactory.createMatteBorder(0, 0, 0, 5, Color.RED); 
Border newBorder = BorderFactory.createCompoundBorder(redBorder, oldBorder); 
jTextField.setBorder(newBorder); 

Este enfoque mantiene el borde anterior y lo envuelve dentro de su borde rojo (parcial).

+0

más limpio que la otra respuesta, aunque no creo que OP necesite mantener el borde original. – brimborium

+0

Muchas gracias Jacob. Al aplicar solo el matteBorder, el campo de texto también pierde su borde original y muestra solo un borde rojo en un lado y se ve como una línea en lugar de un campo de texto. Pero tu respuesta evitó ese escenario. – Kanth

4

Puede crear su propia clase CustomBorder ampliando desde la clase Border y creando su propio borde personalizado para su componente. Configurarlo llamando setBorder() en sus Component 's ejemplo, algo como:

class MyBorder implements Border { 

    @Override 
    public void paintBorder(Component cmpnt, Graphics grphcs, int x, int y, int width, int height) { 
     //draw your border here 
    } 

    @Override 
    public Insets getBorderInsets(Component cmpnt) { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 

    @Override 
    public boolean isBorderOpaque() { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 

} 

Referencia:

+1

¿Por qué el ** Questionmark ** al final? Esto no tiene ningún sentido. Aunque +1 para Custom Border :-) –

+0

Lol fue una sugerencia cuestionada :) –

+1

Al proporcionar fragmentos, sería muy inteligente usar nombres propios en lugar de ** i/i1/i2/i3 **, mejor usar, * * int x, int y, int width, int height **, para que transmita el mensaje, sin más pensamientos :-) –

8

En el siguiente ejemplo he añadido una frontera lateral izquierda de 5 píxeles:

JTextField jtf = new JTextField();   
jtf.setBorder(BorderFactory.createMatteBorder(0, 5, 0, 0, Color.BLACK)); 

Thi s es una frontera lateral derecho:

jtf.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 5, Color.BLACK)); 

espero que esto es lo que está después

Cuestiones relacionadas