transparente poner bordes borde java swing jtextfield

java - poner - Swing JTextField cómo quitar el borde?



poner borde a un jlabel en java (6)

¿Hay alguna forma de eliminar un borde en un JTextField ?

txt = new JTextField(); txt.setBorder(null); // <-- this has no effect.

Realmente quisiera que se pareciera a una JLabel , pero todavía necesito que sea un JTextField porque quiero que la gente pueda resaltarlo.


Desde la respuesta a su question anterior question usted sabe que algunas PL&F pueden obstruir la frontera.

La solución obvia es, por lo tanto, anular el método setBorder al que setBorder el PL&F y descartar el cambio.

JTextField text = new JTextField() { @Override public void setBorder(Border border) { // No! } };


Intente configurarlo en BorderFactory.createEmptyBorder () en lugar de nulo. A veces esto "hace el truco" porque establecerlo en nulo en realidad tiene un significado diferente.

Si eso no funciona, es posible que el aspecto y la apariencia que está utilizando esté anulando algo. ¿Estás usando el predeterminado o algo personalizado?


La única forma de hacerlo funcionar en TODAS las circunstancias es mediante la siguiente configuración:

setBorder (BorderFactory.createLineBorder (new Color (0, 0, 0, 0), 2));

de lo contrario (cuando tenga un fondo nulo del contenedor primario) verá que el cursor "I" permanece para siempre en el borde izquierdo de su JTextField. (Simplemente haga algunas pruebas para diferentes grosores de bordes y observe la forma bastante extraña en que JTextField coloca el cursor cuando lo activa por primera vez).

Alternativamente puede configurar:

setBorder (BorderFactory.createLineBorder (getBackground (), 2));

pero obtendrá el campo óptico más grande por 2 píxeles en las cuatro direcciones. Si no especifica el grosor del borde, verá el cursor ENTRE este borde y el campo que permanece para siempre.


No, no puedes quitar la frontera. Especialmente sobre la pantalla de los componentes AWT. Utilizan el conjunto de widgets nativos (se dibujan fuera de Java).

Intente hacer una línea que sea similar a su fondo ... por ejemplo, si su fondo es blanco, entonces tiene que:

setBorder(BorderFactory.createLineBorder(Color.white));

A continuación, establezca el fondo en blanco:

setBackground(Color.white);


txt.setBorder(new LineBorder(Color.BLACK,0));

Podría funcionar.