Je voudrais créer JComboBox
contrôle similaire à la zone de texte URL de Firefox. Est-ce que quelqu'un sait comment personnaliser le champ de texte du JComboBox
. Je veux ajouter quelques icônes sur le ALIGN.HORIZONTAL_RIGHT
près du bouton fléché des JComboBox
Comment ajouter une icône près de flèche pour JComboBox
Merci pour votre explication très détail. En fait, je vais combiner DefaultListCellRenderer
et ajouter l'icône à la zone de liste déroulante comme code suivant
import java.awt.Dimension;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Main extends JFrame {
public Main() {
// Create icon "C"
JButton jb = new JButton("C");
jb.setMargin(new Insets(0, 0, 0, 0));
jb.setBounds(245, 2, 18, 18);
// Create combo box
String[] languages = new String[]{"Java", "C#", "PHP"};
JComboBox jc = new JComboBox(languages);
// jc.setEditable(true);
jc.add(jb);
getContentPane().add(jc);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(new Dimension(300, 58));
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
final Main main = new Main();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
main.setVisible(true);
}
});
}
}
Mais quand je mets jc.setEditable(true)
; l'éditeur de combo a caché mon icône. Je pense à une autre façon de simuler Firefox barre impressionnante. Avez-vous une idée pour cela?
Salut aberrant80, Merci pour votre réponse rapide. J'ai vérifié le DefaultListCellRenderer, cela m'aidera à personnaliser l'élément de la liste comme Firefox. Mais l'autre pour ajouter l'icône dans la boîte de texte JComboBox, j'utiliserai la peinture personnalisée pour dessiner une icône qui devrait être sur la droite du contrôle. http://java.sun.com/docs/books/tutorial/uiswing/painting/index.html Merci, Minh – Minh
@minh, pour la zone de texte, vous devriez voir ce que vous pouvez faire en créant un éditeur. il y a une mention dans le tutoriel @ aberrant80 posté. – akf
DefaultListCellRenderer est essentiellement un JLabel. JLabel prend en charge une icône en plus du texte normal. Je suppose qu'il devrait simplement récupérer le moteur de rendu et ensuite définir le positionnement/l'alignement approprié de l'icône au texte et cela pourrait fonctionner. – aberrant80