2014-01-02 3 views
0

У меня есть одна панель и одна выпадающая группа. В основном, я хочу сделать цвет панели как один из элементов combobox. Ниже приведено описание ниже. В верхней части отображается ожидаемый результат, а ниже - то, что окончательно отображается.Цвет фона панели как элемент в JComboBox

enter image description here

Исходный код

Нажмите кнопку, откройте диалоговое окно и зарегистрировать цвет ПАНЕЛЬ1 в массиве

private void bTestActionPerformed(java.awt.event.ActionEvent evt) {          
    showingColors[0] = Panel1.getBackground(); 
    testDialog.setVisible(true); 
} 

Создание ComboBox. Обратите внимание, что в массиве цветов последние 3 цвета предназначены только для тестирования.

Color[] colors={showingColors[0],Color.red,Color.blue,Color.green}; 
CBackground = new javax.swing.JComboBox(colors); 
CBackground.setMaximumRowCount(6); 
CBackground.setRenderer(new MyCellRenderer()); 

MyCellRenderer класс

class MyCellRenderer extends JButton implements ListCellRenderer { 
public MyCellRenderer() { 
    setOpaque(true); 

} 
boolean b=false; 

@Override 
public void setBackground(Color bg) { 
    // TODO Auto-generated method stub 
    if(!b) 
    { 
     return; 
    } 

    super.setBackground(bg); 
} 

@Override 
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) 
{ 
    b=true; 
    setText(" ");   
    setBackground((Color)value);   
    b=false; 
    return this; 
} 

} //End of class MySellRenderer 
+0

Там нет необходимости менять название. Правильный способ показать ответ решается, чтобы либо повысить его, либо принять ответ. Поскольку это ваш собственный вопрос, вы не можете принять ответ на несколько дней, но вернитесь сюда, чтобы сделать это. – PearsonArtPhoto

+0

Приношу свои извинения! – sarotnem

+0

Без проблем, мы были все новые раз ;-) – PearsonArtPhoto

ответ

0

Наконец я нашел решение. Я создал функцию, которая создает новый DefaultComboBoxModel с массивом, который хранит мой цвет, и я вызываю эту функцию в ActionListener кнопки, которая открывает диалоговое окно.

private void fillSelectCombos(JComboBox box1) { 
    DefaultComboBoxModel model = new DefaultComboBoxModel(showingColors); 
    box1.setModel(model); 
    box1.setRenderer(new MyCellRenderer()); 
} 

И кнопка слушателем

private void bTestActionPerformed(java.awt.event.ActionEvent evt) {          
    setColorsArray(); 
    fillSelectCombos(CBackground); 
    testDialog.setVisible(true); 
} 
Смежные вопросы