Je veux définir la couleur de police pour les lignes/entrées dans un JCombobox, unique pour chaque ligne. Donc, fondamentalement, lorsque vous cliquez sur la flèche de la liste déroulante, vous devriez voir quelques lignes qui sont des couleurs différentes, et je veux spécifier les couleurs moi-même en fonction de leurs propriétés. Comment devrais-je faire cela? Merci!Comment faire une couleur de police unique pour les lignes dans un JCombobox?
Répondre
Vous devrez probablement fournir un moteur de rendu personnalisé pour votre JComboBox, consultez le tutoriel de Sun ici:
http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html#renderer
(Désolé pour l'absence d'un lien, ne peut pas poster des liens encore depuis que je « m un nouveau membre)
Vous devez créer un ListCellRenderer personnalisé en tant que tel:
class Renderer extends JLabel implements ListCellRenderer {
et mettre en œuvre cette méthode:Ensuite, en fonction de votre source, utilisez this.setForeground (Couleur de couleur) pour définir la couleur de votre texte. Enfin,
return this;
}
Vous pouvez utiliser un ListCellRenderer
. Vous devez écrire une classe personnalisée pour cela. Voici le code complet pour définir le premier plan en fonction de l'index (pour éviter les doublons). Vous pouvez également définir un arrière-plan de sélection personnalisé et un arrière-plan pour cela. Voir les commentaires dans le code.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class ListCellRendererDemo2 extends JFrame
{
Hashtable<Integer,Color> table;
JComboBox<String> c;
public ListCellRendererDemo2()
{
createAndShowGUI();
}
private void createAndShowGUI()
{
setTitle("JComboBox Demo");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
table=new Hashtable<Integer,Color>();
table.put(1,Color.RED);
table.put(2,Color.BLUE);
table.put(3,Color.GREEN);
table.put(4,Color.GRAY);
c=new JComboBox<String>();
c.addItem("Item 1");
c.addItem("Item 2");
c.addItem("Item 3");
c.addItem("Item 4");
c.addItem("Item 5");
c.addItem("Item 6");
c.addItem("Item 7");
c.addItem("Item 8");
c.setRenderer(new MyListCellRenderer(table));
add(c);
setSize(400,400);
setVisible(true);
}
public static void main(String args[])
{
SwingUtilities.invokeLater(new Runnable(){
public void run()
{
new ListCellRendererDemo2();
}
});
}
}
class MyListCellRenderer extends DefaultListCellRenderer
{
Hashtable<Integer,Color> table;
public MyListCellRenderer(Hashtable<Integer,Color> table)
{
this.table=table;
// Set opaque for the background to be visible
setOpaque(true);
}
public Component getListCellRendererComponent(JList jc,Object val,int idx,boolean isSelected,boolean cellHasFocus)
{
// Set text (mandatory)
setText(val.toString());
// Set the foreground according to the selected index
setForeground(table.get(idx));
// Set your custom selection background, background
// Or you can get them as parameters as you got the table
if(isSelected) setBackground(Color.LIGHT_GRAY);
else setBackground(Color.WHITE);
return this;
}
}
- 1. Couleur de police, taille, changement de police
- 2. Définition d'une couleur de police dans VBA
- 3. Comment faire fonctionner InputVerifier avec un JComboBox modifiable
- 4. changer la police pour un texte à une police pas dans les polices de la famille
- 5. Comment puis-je faire une dépendance unique dans mysql?
- 6. Comment changer la couleur de la police dans VB6?
- 7. Avoir un filtre JComboBox une jtable
- 8. Réglage couleur de la police sur DefaultStyledDocument
- 9. Comment ajouter une icône près de flèche pour JComboBox
- 10. Existe-t-il un moyen de faire de la police de caractères sIFR une police?
- 11. Réglage de la couleur de la police sélectionnée pour être différente de la couleur de la police dans le contrôle non sélectionné listbox
- 12. Passer des valeurs entre les lignes dans la colonne unique,
- 13. RichTextBox couleur lignes sélectionnées
- 14. Comment changer la couleur de la police d'un TextBox désactivé?
- 15. Netbeans - Entrer des éléments dans un jComboBox
- 16. Java - cases à cocher dans un JComboBox
- 17. Comment faire pour restaurer les lignes insérées OracleBulkCopy()?
- 18. Couleur de police non définie dans Conteneur sur DOTNETNUKE
- 19. vba excel comment coller des valeurs sans police/couleur/bg mise en forme de couleur
- 20. Faire un design de site Web unique
- 21. Comment faire pour modifier une couleur de série dans Excel en utilisant C#?
- 22. NSIS visual studio couleur/police/intellisense
- 23. Police et unité de taille de police pour les smartphones
- 24. Remplacer les couleurs par défaut de JComboBox
- 25. Meilleure police pour les formulaires Web
- 26. Comment définir la couleur des lignes horizontales entre les lignes d'un gridview asp.net?
- 27. Y at-il un moyen de faire un JComboBox agir comme un HTML Select?
- 28. Comment faire un site unique pour tous les appareils, PC, iPhone, BlackBerry, Windows Mobile Android, etc?
- 29. SQL: Comment sélectionner uniquement les lignes avec une valeur unique sur certaines colonnes?
- 30. Configurer les liens symboliques pour un répertoire unique dans Tomcat
s'il vous plaît n'est pas là un fil plus ancien, pourquoi réincarner un zombie, +1 pour Initial Thread :-) – mKorbel