
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JTextField;
import java.awt.Color;
import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import java.awt.BorderLayout;
import javax.swing.JButton;
public class Try {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Try window = new Try();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Try() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.getContentPane().setBackground(new Color(135, 206, 250));
JComboBox<String> comboBox = new JComboBox<String>();
comboBox.addItem("1");
comboBox.addItem("2");
comboBox.setEditable(true);
JTextField boxField = ((JTextField)comboBox.getEditor().getEditorComponent());
boxField.setBackground(new Color(0, 0, 0, 0));
comboBox.setEditable(false);
comboBox.setRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JComponent result = (JComponent)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
result.setOpaque(false);
return result;
}});
frame.getContentPane().add(comboBox, BorderLayout.NORTH);
JButton btnNewButton = new JButton("New button");
frame.getContentPane().add(btnNewButton, BorderLayout.SOUTH);
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
请问怎么解决这个问题,让它的选项背景正常显示透明?