- Undocumented Matlab - https://undocumentedmatlab.com -

Javacomponent background color

Posted By Yair Altman On October 12, 2011 | 3 Comments

In this website, I have often shown how Matlab application functionality can be significantly enhanced by including Java components in the Matlab GUI, using the built-in semi-documented javacomponent function (which I described here [1] last year).
Using java components in Matlab is simple and easy, but there are a few annoying catches. One of these is the fact that the default Matlab figure background color ([0.8, 0.8, 0.8]) is a different shade of gray than the default uicontrol background color ([0.9255, 0.9137, 0.847]). javacomponents use the same background color as uicontrols.

hPanel = uipanel('units','pixe', 'pos',[30,30,200,100], 'title','Matlab uipanel');
jLabel = javax.swing.JLabel('Java Label');
[jhlabel,jContainer]=javacomponent(jLabel, [250,50,100,50], gcf);

Javacomponents use different default background color than figures
Javacomponents use different default background color than figures

While Matlab users are familiar with updating Matlab colors, doing so with Java colors is a bit different. We have two basic ways to align the javacomponent background color with the figure’s: either change the figure’s Color property to the Java component’s bgcolor, or vice versa:

Changing the javacomponent‘s background color to the figure color

% Fix the Java component:
% Variant #1
bgcolor = get(gcf, 'Color');
jLabel.setBackground(java.awt.Color(bgcolor(1),bgcolor(2),bgcolor(3)));
% Variant #2
bgcolor = num2cell(get(gcf, 'Color'));
jLabel.setBackground(java.awt.Color(bgcolor{:}));
% Fix the Matlab panel uicontrol
set(hPanel, 'BackgroundColor', get(gcf,'Color'));

controls with fixed background colors
controls with fixed background colors

Changing the figure’s color to the javacomponent‘s background color

bgcolor = jLabel.getBackground.getComponents([]);
set(gcf, 'Color', bgcolor(1:3));

figure with modified color to match the controls
figure with modified color to match the controls

Look at the list of related posts below for other articles related to colors in Matlab.

Categories: GUI, Java, Low risk of breaking in future versions, Semi-documented function, Undocumented feature


3 Comments (Open | Close)

3 Comments To "Javacomponent background color"

#1 Comment By Panos On November 9, 2011 @ 17:49

hello,

(How) is it possible to place the panel label(name) someplace else than the top of it?
thanks in advance

#2 Comment By Yair Altman On November 10, 2011 @ 10:15

@Panos – you can easily get the handle of the panel label and then modify its Position property, as well as other aspects: color, font, and even component style, as described here: [8]

#3 Comment By Peng Liu On July 19, 2019 @ 11:07

Hello Yair,

is it possible to set transparency of javacomponents backgroud color? I tried setBackground(java.awt.Color(1, 0.98, 0.94, 0.5)) of my Spinning icon which I learned from your article as well. Here 0.5 defines the Alpha. But only at start and at end the transparency works. While the Spinning Icon runs, it doesn’t works. May you have some idea or Solutions?


Article printed from Undocumented Matlab: https://undocumentedmatlab.com

URL to article: https://undocumentedmatlab.com/articles/javacomponent-background-color

URLs in this post:

[1] described here: http://undocumentedmatlab.com/blog/javacomponent/

[2] Customizing figure toolbar background : https://undocumentedmatlab.com/articles/customizing-figure-toolbar-background

[3] The javacomponent function : https://undocumentedmatlab.com/articles/javacomponent

[4] Common javacomponent problems : https://undocumentedmatlab.com/articles/common-javacomponent-problems

[5] Color selection components : https://undocumentedmatlab.com/articles/color-selection-components

[6] Bold color text in the Command Window : https://undocumentedmatlab.com/articles/bold-color-text-in-the-command-window

[7] cprintf – display formatted color text in the Command Window : https://undocumentedmatlab.com/articles/cprintf-display-formatted-color-text-in-command-window

[8] : https://undocumentedmatlab.com/blog/panel-level-uicontrols/

Copyright © Yair Altman - Undocumented Matlab. All rights reserved.