Change Color of each individual String in a Listbox ?
    17 views (last 30 days)
  
       Show older comments
    
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 ?
0 Comments
Accepted Answer
  Adam
      
      
 on 2 Sep 2014
        
      Edited: Adam
      
      
 on 2 Sep 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;
end
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 Comments
  Guillaume
      
      
 on 3 Sep 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'});
More Answers (4)
  Adam
      
      
 on 1 Sep 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>'} );
  Max Müller
      
 on 1 Sep 2014
        4 Comments
  Adam
      
      
 on 1 Sep 2014
				dec2hex( [r g b] )
should help convert between the two, although you have to scoop up the 3 rows of the result into a single string to put into the html string.
  Max Müller
      
 on 2 Sep 2014
        1 Comment
  Image Analyst
      
      
 on 2 Sep 2014
				Max, this is not an official "Answer" to your original question. If anything, it should have been a Comment to some other response.
  Max Müller
      
 on 2 Sep 2014
        2 Comments
  Adam
      
      
 on 2 Sep 2014
				Please don't keep adding new questions as answers, it is confusing.
You can define the colour of independent static text objects easily enough (or indeed any independent objects like that if they are predefined).
If you want to have different coloured backgrounds or text in a listbox or uitable or similar though then I'm not aware of any alternative to using html and/or the underlying java UI programming as discussed in previous answers.
If you can explain which element of the suggested solution you are having a problem with we can assist further on that.
See Also
Categories
				Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




