Change Color of each individual String in a Listbox ?

30 visualizzazioni (ultimi 30 giorni)
Hey Guys,
I want to give each Word in my List box an specific color. My mentor said: its not possible. Now I ask here: is it possible to chose the Color of Listbox text with the RGB system ?

Risposta accettata

Adam il 2 Set 2014
Modificato: Adam il 2 Set 2014
Data(1).name = 'red';
Data(1).Color = [255 0 0];
Data(2).name = 'green';
Data(2).Color = [0 255 0];
Data(3).name = 'blue';
Data(3).Color = [0 0 255];
pre = '<HTML><FONT color="';
post = '</FONT></HTML>';
listboxStr = cell(numel( Data ),1);
for i = 1:numel( Data )
str = [pre rgb2Hex( Data(i).Color ) '">' Data(i).name post];
listboxStr{i} = str;
figure; hListBox = uicontrol('Style','list', 'Position', [20 20 100 100], 'String', listboxStr );
That should give you an example of what you want with the following function defined based on Guillame's input above :
function hexStr = rgb2Hex( rgbColour )
hexStr = reshape( dec2hex( rgbColour, 2 )',1, 6);
Obviously if you have a pre-existing listbox from Guide you can just do the usual:
set( handles.listbox1, 'String', listboxStr )
instead of creating a new listbox.
  9 Commenti
Guillaume il 3 Set 2014
The colours and names are embedded in the strings, so you could parse them:
liststrings = get(hlistbox, 'string');
colnames = regexp(liststrings, 'color="(.*)">(.*)</FONT', 'tokens', 'once');
data = cell2struct(reshape([colnames{:}], 2, []), {'color', 'name'});

Accedi per commentare.

Più risposte (4)

Adam il 1 Set 2014
Slightly modified example of code Yair Altman posted many years ago:
figure; uicontrol('Style','list', 'String', ...
{'<HTML><FONT color="red">Red</FONT></HTML>', ...
'<HTML><FONT color="green">Green</FONT></HTML>', ...
'<HTML><FONT color="blue">Blue</FONT></HTML>'} );
  7 Commenti

Accedi per commentare.

Max Müller
Max Müller il 1 Set 2014
but i very new to programing..... can u pls explain me, how I cant set the ListboxInput and color each Word with a special Color (RGB)
  4 Commenti
Guillaume il 2 Set 2014
That would be:
reshape(dec2hex([r g b], 2)',1, 6)

Accedi per commentare.

Max Müller
Max Müller il 2 Set 2014
it sucks
  1 Commento
Image Analyst
Image Analyst il 2 Set 2014
Max, this is not an official "Answer" to your original question. If anything, it should have been a Comment to some other response.

Accedi per commentare.

Max Müller
Max Müller il 2 Set 2014
I just need an interactive way to show some text with a unique color and give this thing an on click callback.
  2 Commenti
Max Müller
Max Müller il 2 Set 2014
Imagine i have a structure called Data.
are its Input. Now I want to write the names into a Listbox and give the String the Color form Data.Color.

Accedi per commentare.


Scopri di più su Environment and Settings in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by