Multi-colored pop-up menu entries
Show older comments
Is there a way to make a gui pop-up menu display its list of selections with different text colors? What about different fonts and typesetting (Italics, Boldface, etc...)
Accepted Answer
More Answers (1)
Matt Stead
on 22 Dec 2024
Edited: Matt Stead
on 22 Dec 2024
This worked better for me. Largely copied & pasted from something I'm working on, so edit as necessary.

% set colors
DARK_RED = [0.63 0.08 0.18];
DARK_ORANGE = [0.91 0.45 0.05];
DARK_YELLOW = [0.93 0.69 0.13];
DARK_GREEN = [0.0 0.45 0.0];
DARK_BLUE = [0.0 0.45 0.74];
DARK_PURPLE = [0.49 0.18 0.56];
% build HTML strings
part1 = '<HTML><FONT bgcolor="';
part2 = '" color="';
part3 = '">     <FONT bgcolor="#FFFFFF" color="#000000">  ';
part4 = '</FONT></HTML>';
hex_str = sprintf('#%02x%02x%02x', round(DARK_RED(1) * 255), round(DARK_RED(2) * 255), round(DARK_RED(3) * 255));
hmtl_strings{1} = [part1 hex_str part2 hex_str part3 'Red' part4];
hex_str = sprintf('#%02x%02x%02x', round(DARK_ORANGE(1) * 255), round(DARK_ORANGE(2) * 255), round(DARK_ORANGE(3) * 255));
hmtl_strings{2} = [part1 hex_str part2 hex_str part3 'Orange' part4];
hex_str = sprintf('#%02x%02x%02x', round(DARK_YELLOW(1) * 255), round(DARK_YELLOW(2) * 255), round(DARK_YELLOW(3) * 255));
hmtl_strings{3} = [part1 hex_str part2 hex_str part3 'Yellow' part4];
hex_str = sprintf('#%02x%02x%02x', round(DARK_GREEN(1) * 255), round(DARK_GREEN(2) * 255), round(DARK_GREEN(3) * 255));
hmtl_strings{4} = [part1 hex_str part2 hex_str part3 'Green' part4];
hex_str = sprintf('#%02x%02x%02x', round(DARK_BLUE(1) * 255), round(DARK_BLUE(2) * 255), round(DARK_BLUE(3) * 255));
hmtl_strings{5} = [part1 hex_str part2 hex_str part3 'Blue' part4];
hex_str = sprintf('#%02x%02x%02x', round(DARK_PURPLE(1) * 255), round(DARK_PURPLE(2) * 255), round(DARK_PURPLE(3) * 255));
hmtl_strings{6} = [part1 hex_str part2 hex_str part3 'Purple' part4];
% build popup
recPopup = uicontrol('Parent', d, ...
'Position', [10 (y_offset + 5) 110 17], ...
'Style', 'popupmenu', ...
'FontSize', SYS_FONT_SIZE, ...
'String', hmtl_strings, ...
'Value', 1, ...,
'HorizontalAlignment', 'left', ...
'Interruptible', 'off', ...
'BusyAction', 'cancel');
2 Comments
Joseph
on 12 Jun 2025
2025a seems to have broken this method (at least on Linux). Does anyone know what to do now?
Categories
Find more on Entering Commands 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!