我遇到了JComboBox自定義ListCellRenderer的問題。我想創建一個組合框,讓它在4種顏色之間進行選擇。我希望組合框通過JPanel的「列表」以所需的背景顏色顯示顏色。我設法得到我想要的東西,唯一的問題是,當我點擊物品時,這種顏色變成灰色,不再顯示原來的顏色。 下面的代碼:JComboBox自定義ListCellRenderer
package custom_renderer_combobox;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListCellRenderer;
import javax.swing.JComboBox;
public class gui extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
private Color[] colors={Color.BLACK,Color.blue,Color.cyan,Color.GRAY,Color.green,Color.MAGENTA,Color.ORANGE,Color.RED};
gui(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize(new Dimension(400,400));
getContentPane().setLayout(null);
JComboBox<JPanel> comboBox = new JComboBox<JPanel>();
comboBox.setRenderer(new myRenderer());
comboBox.setBounds(36, 59, 211, 20);
getContentPane().add(comboBox);
for(int i=0;i<colors.length;i++){
JPanel temp=new JPanel();
temp.setOpaque(true);
temp.setBackground(colors[i]);
comboBox.addItem(temp);
}
comboBox.repaint();
}
class myRenderer implements ListCellRenderer{
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
return ((JPanel) value);
}
}
}
這裏是一些圖片:
我認爲這個問題是在自定義渲染器,可有人告訴我,我將不得不這樣做?
準確地說,我想要的行爲。非常感謝!!!!! – z10h22