Ho un campo di ricerca in un JPanel. JPanel ha un'immagine di sfondo. Voglio posizionare un JTextField in questo pannello, ma il JTextField dovrebbe avere un bordo tranparent, quindi ha del padding in alto e in basso dove dovresti vedere l'immagine di sfondo del pannello.Bordo trasparente di JTextField in Swing
Ho un SSCCE qui, dove il pannello ha uno sfondo blu invece di un'immagine di sfondo. Voglio che il campo di testo sia bianco, ma con un bordo intorno, che ti permette di vedere il pannello blu sotto di esso. Un bordo trasparente sarebbe fantastico, ma EmptyBorder non funziona. Ecco l'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();
}
});
}
}
Thanks a lot.
Grazie per la vostra risposta Guillaume. Il mio JTextfield è all'interno di un JPanel con Borderlayout ma la parte NORD e SUD non era occupata. Quindi ho usato Box.createVerticalStrut (10) e l'ho aggiunto a NORD e SUD. Questo ha funzionato anche per me. Ma tengo a mente il tuo suggerimento, quindi ho un'altra soluzione nel caso io usi il NORD e il SUD per altri componenti.
+1 per la pubblicazione di uno SSCCE :) – Sujay