Rechercher : dans
Par :

Java combobox pour choisir des couleurs

Dernière réponse le 15 avr 2007 à 14:42:30 ricardo, le 12 avr 2007 à 19:06:00 
 Signaler ce message aux modérateurs

Bonjour,
je cherche a faire en java une liste deroulante pour choisir parmis des couleurs.
chaque ligne de la liste serait construite ainsi:
a gauche un carré rempli avec la couleur
et a droite l'intitulé qui correspond a la couleur

j'ai trouvé dans le didactitiel de sun sur les jcombobox un debut de reponse.
je me heurte a un pb :
je ne sais pas comment créer un carré dans une ImageIcon.
avant de me lancer dans des recherches sur le net, je voulais savoir si ce genre de combobox pour choisir une couleur n'existe pas deja

Configuration: Windows XP
Firefox 2.0.0.3

Meilleures réponses pour « java combobox pour choisir des couleurs » dans :
Comment créer un logo ? Les règles à respecter VoirUn logo, ou logotype, est un dessin unique, qui représente une société, une association, une institution... Il dit qui est l’entreprise, ses valeurs, son marché. Il est constitué de deux types d’éléments : graphique et linguistique. Les...
La table des couleurs VoirLe codage des couleurs Les couleurs en HTML sont définies par 3 nombres hexadécimaux représentant les tons de Rouge, de Vert et de Bleu (selon le codage RGB (Red Green Blue, en français : RVB) de la couleur choisie. Ainsi la syntaxe de codage...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
La représentation informatique de la couleur VoirLes représentations de la couleur Afin de pouvoir manipuler correctement des couleurs et échanger des informations colorimétriques il est nécessaire de disposer de moyens permettant de les catégoriser et de les choisir. Ainsi, il n'est pas rare...

1

 HackTrack, le 15 avr 2007 à 14:42:30
  • +3

Salut!

Je suppose que clea doit exister, mais voici en tout cas une solution possible. A toi d'adapter...

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.color.ColorSpace;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;

import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListCellRenderer;

/**
 * Created on 15-avr.-07
 * 
 * @author: HackTrack
 */

public class ComboColorChooser extends JComboBox {
	private Component target;

	private MyColor[] colors;

	public ComboColorChooser(Component target) {
		this.target = target;
		initializeCombo();
	}

	private void initializeCombo() {
		colors = new MyColor[3];
		colors[0] = new MyColor(Color.RED.getRGB(), "Rouge");
		colors[1] = new MyColor(Color.BLUE.getRGB(), "Bleu");
		colors[2] = new MyColor(156, 58, 97, "Horrible");
		DefaultComboBoxModel model = new DefaultComboBoxModel(colors);
		setModel(model);
		setRenderer(new ListCellRenderer() {
			public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
				System.out.println(value.toString());
				MyColor myColor = (MyColor) value;
				int w = 20;
				int h = 20;
				BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
				Graphics g = img.getGraphics();
				g.setColor(myColor);
				g.fillRect(0, 0, w, h);
				ImageIcon icon = new ImageIcon(img);
				JLabel label = new JLabel(myColor.getColorName(), icon, JLabel.LEADING);
				return label;
			}
		});
		addActionListener(new ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				JComboBox source = (JComboBox)e.getSource();
				Color color = (MyColor)source.getSelectedItem();
				target.setBackground(color);
				target.repaint();
			};
		});
	}

	class MyColor extends Color {
		private String colorName;

		public MyColor(int rgb, String colorName) {
			super(rgb);
			this.colorName = colorName;
		}

		public MyColor(int rgba, boolean hasalpha, String colorName) {
			super(rgba, hasalpha);
			this.colorName = colorName;
		}

		public MyColor(int r, int g, int b, String colorName) {
			super(r, g, b);
			this.colorName = colorName;
		}

		public MyColor(float r, float g, float b, String colorName) {
			super(r, g, b);
			this.colorName = colorName;
		}

		public MyColor(ColorSpace cspace, float[] components, float alpha, String colorName) {
			super(cspace, components, alpha);
			this.colorName = colorName;
		}

		public MyColor(int r, int g, int b, int a, String colorName) {
			super(r, g, b, a);
			this.colorName = colorName;
		}

		public MyColor(float r, float g, float b, float a, String colorName) {
			super(r, g, b, a);
			this.colorName = colorName;
		}

		public String getColorName() {
			return colorName;
		}
	}

	public static void main(String[] args) {
		JFrame view = new JFrame();
		Container c = view.getContentPane();
		c.setLayout(new BorderLayout());
		JPanel panel = new JPanel();
		panel.setPreferredSize(new Dimension(320, 200));
		c.add(panel, BorderLayout.CENTER);
		c.add(new ComboColorChooser(panel), BorderLayout.NORTH);

		view.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		view.pack();
		view.setVisible(true);
	}

}



;-)
HackTrack

Répondre à HackTrack