Как нарисовать JComboxboxJAVA

Программисты JAVA общаются здесь
Anonymous
Как нарисовать JComboxbox

Сообщение Anonymous »

При запуске кода ниже все части JCombobox окрашены, когда seteditor = true;
Однако, когда seteditor = false, только раскрывающийся список может быть окрашен. < /p>
< P> кажется, что поле входа выглядит как «отключенное» без какого -либо способа изменить свой цвет. Я попытался выпустить SetEnabled () для этой части, но без успеха. Я также пробовал много других вещей в течение нескольких месяцев, но все потерпели неудачу. < /P>
есть решение? < /P>
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.Color;
import java.awt.Component;
import javax.swing.ComboBoxEditor;
import javax.swing.DefaultListCellRenderer;

public class CustomComboBox
{
public static void main(String[] args)
{
String[] items = { "Apples", "Bananas", "Cherries", "Oranges" };

JFrame frame = new JFrame("JComboBox Custom Colors");
frame.setSize(213, 200);
frame.getContentPane().setLayout(null);

JButton Finish = new JButton("Exit");
Finish.addActionListener(e -> System.exit(0));
Finish.setBounds(43, 133, 100, 23);

JComboBox comboBox = new JComboBox(items);
comboBox.setBounds(43, 23, 101, 20);
comboBox.setRenderer(new DefaultListCellRenderer()
{
private static final long serialVersionUID = 1L;
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus)
{
Component renderer = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
renderer.setForeground(Color.BLACK);
renderer.setBackground(Color.pink);
return renderer;
}
});

JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBounds(10, 10, 193, 179);
panel.setBackground(new Color(102, 205, 170));
panel.add(comboBox);
panel.add(Finish);

frame.getContentPane().add(panel);

// coloring the entry field
ComboBoxEditor cedit = comboBox.getEditor();
JTextField texte = (JTextField) cedit.getEditorComponent();
texte.setBackground(Color.green);
texte.setForeground(Color.red);
cedit.setItem(texte);
comboBox.setEditor(cedit);

/* Cannot be colored when changing "true" by "false" */
comboBox.setEditable(true);
// comboBox.setEditable(false);
/* */

frame.setUndecorated(true);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... jcomboxbox

Вернуться в «JAVA»