J'ai un JComboBox où je veux que l'utilisateur choisisse la couleur. JComboBox affiche uniquement les couleurs, sans aucun texte. J'ai trouvé cette solution. S'il vous plaît me conseiller si cela est bon ou il devrait être évité et pourquoi. Je suis nouveau à Swing et Java en général alors s'il vous plaît soyez patient :)Choisissez couleur avec JComboBox Java Swing
public class ToolBar{
private MainFrame mainFrame;
public ToolBar (MainFrame mainFrame) {
this.mainFrame = mainFrame;
}
public JPanel getToolBar(){
JPanel toolbarPanel = new JPanel(new FlowLayout(FlowLayout.LEADING,2,2));
toolbarPanel.setPreferredSize(new Dimension(mainFrame.getScreenWidth(),60));
toolbarPanel.setBorder(BorderFactory.createLineBorder(Color.gray));
JButton fillButton = new JButton("Fill: ");
fillButton.setPreferredSize(new Dimension(60,20));
//fillButton.setBackground(Color.red);
toolbarPanel.add(fillButton);
String[] test = {" ", " " , " " , " " , " " , " "};
JComboBox colorBox = new JComboBox(test);
colorBox.setMaximumRowCount(5);
colorBox.setPreferredSize(new Dimension(50,20));
colorBox.setRenderer(new MyCellRenderer());
toolbarPanel.add(colorBox);
return toolbarPanel;
}
class MyCellRenderer extends JLabel implements ListCellRenderer {
public MyCellRenderer() {
setOpaque(true);
}
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus)
{
setText(value.toString());
switch (index) {
case 0: setBackground(Color.white);
break;
case 1: setBackground(Color.red);
break;
case 2: setBackground(Color.blue);
break;
case 3: setBackground(Color.yellow);
break;
case 4: setBackground(Color.green);
break;
case 5: setBackground(Color.gray);
break;
}
return this;
}
}
}
Cela fonctionne bien. Il affiche des éléments de sélection vides dans JComboBox avec des couleurs différentes. Le problème est que lorsque l'utilisateur sélectionne la couleur, la couleur de la sélection dans JComboBox ne change pas. Quelles lignes de code devrais-je ajouter et où donc quand l'utilisateur sélectionne la couleur d'une liste dans laquelle cette couleur est affichée dans le champ JComboBox?
J'ai essayé quelques solutions mais le résultat est que lorsque l'utilisateur choisit la sélection des couleurs dans JComboBox change toujours gris ...
J'ai regardé à travers plusieurs questions similaires, mais je ne peux pas comprendre quelle partie du code de traite de changement de couleur de JComboBox lorsque la sélection a été faite ...
S'il vous plaît utiliser le code pour le formatage des documents code, entrée/sortie et structurés comme HTML ou XML. Pour ce faire, sélectionnez l'échantillon et cliquez sur le bouton "{}" au-dessus du formulaire de publication/d'édition. –
J'ai utilisé le bouton CODE pour marquer le code dans ma question ... Je vais essayer avec {} la prochaine fois;) Désolé pour le dérangement. –