Tengo un campo de búsqueda en un JPanel. El JPanel tiene una imagen de fondo. Quiero colocar un JTextField en este panel, pero el JTextField debe tener un borde transparente, por lo que tiene un relleno en la parte superior e inferior donde debería ver la imagen de fondo del panel.Borde transparente de JTextField en Swing
Tengo un SSCCE aquí, donde el panel tiene un fondo azul en lugar de una imagen de fondo. Quiero que el campo de texto sea blanco, pero con un borde alrededor, que te permite ver el panel azul debajo de él. Un borde transparente sería genial, pero EmptyBorder no funciona. Aquí está el SSCCE:
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class TransparentBorder
{
public TransparentBorder()
{
//Create and set up the window.
final JFrame frame = new JFrame("Transparent Border");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 100);
// set window size
frame.setUndecorated(false);
//P1
final JPanel panel = new JPanel(new BorderLayout());
panel.setBackground(Color.BLUE);
final JButton btn = new JButton("Search");
btn.setOpaque(false);
panel.add(btn, BorderLayout.EAST);
final JTextField field = new JTextField();
field.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
// field.setOpaque(false);
panel.add(field);
frame.add(panel);
//Display the window.
// frame.pack();
frame.setVisible(true);
}
public static void main(final String[] args)
{
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new TransparentBorder();
}
});
}
}
muchas gracias.
Gracias por su respuesta Guillaume. Mi JTextfield está dentro de un JPanel con Borderlayout pero la parte NORTE y SOUTH no estaban ocupadas. Así que utilicé Box.createVerticalStrut (10) y lo agregué a NORTH y SOUTH. Esto también funcionó para mí. Pero tengo en mente su sugerencia, por lo que tengo otra solución en caso de que use NORTH y SOUTH para otros componentes.
+1 por publicar un SSCCE :) – Sujay