Tôi có một trường tìm kiếm trong một JPanel. JPanel có hình nền. Tôi muốn đặt một JTextField trong bảng điều khiển này, nhưng JTextField nên có một biên giới tranparent, do đó, nó có một số padding để trên cùng và dưới cùng, nơi bạn sẽ thấy hình nền của bảng điều khiển.Đường viền trong suốt của JTextField trong Swing
Tôi có SSCCE tại đây, nơi bảng điều khiển có nền màu xanh thay vì hình nền. Tôi muốn textfield có màu trắng, nhưng với một đường viền xung quanh nó, bạn sẽ thấy bảng màu xanh bên dưới nó. Một đường viền trong suốt sẽ rất tuyệt, nhưng EmptyBorder không hoạt động. Đây 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();
}
});
}
}
cảm ơn rất nhiều.
Cảm ơn câu trả lời của bạn Guillaume. JTextfield của tôi nằm bên trong một JPanel với Borderlayout nhưng phần NORTH và SOUTH không bị chiếm đóng. Vì vậy, tôi đã sử dụng Box.createVerticalStrut (10) và thêm nó vào NORTH và SOUTH. Điều này cũng làm việc cho tôi. Nhưng tôi giữ ý kiến của bạn trong tâm trí, vì vậy tôi có một giải pháp trong trường hợp tôi sử dụng NORTH và SOUTH cho các thành phần khác.
+1 cho đăng một SSCCE :) – Sujay