MATLAB Answers

0

How do I programmatically set the size of the the web browser window that is created with the MATLAB web command " web " ?

Asked by Christopher Stokely on 22 Jan 2019
Latest activity Commented on by Yair Altman on 24 Jan 2019
I would like to use MATLAB's built-in web capabiliies to open a web page and place it on my screen in a specific location.
For example, when I enter the command:
[h1,h2,h3]=web('http://news.google.com','-notoolbar','-new'); % open a web page
I am able to determine the location of the web page on my screen:
webPageScreenInfo = ([h2.getLocationOnScreen.x, ...
h2.getLocationOnScreen.y, ...
h2.getSize.width, ...
h2.getSize.height]);
I have only been able to get the location but not to set the location.
And my available screen size is given by:
availableScreenSize = get( groot, 'Screensize' ); % determine size of my screen
I have played with some undocumented stuff in MATLAB by exploring these commands and a few others:
methodsview('com.mathworks.mde.webbrowser.WebBrowser')
com.mathworks.mlservices.MatlabDesktopServices.getDesktop.closeGroup('Web Browser')
I am lost on how to proceed. Please help!

  0 Comments

Sign in to comment.

Products


Release

R2018b

1 Answer

Answer by Yair Altman on 23 Jan 2019
Edited by Yair Altman on 24 Jan 2019
 Accepted Answer

Note: undocumented/unsupported:
[h1,h2,h3] = web('http://news.google.com','-notoolbar','-new'); % open a web page
drawnow; pause(0.05);
jWindow = h2.getTopLevelAncestor;
jWindow.setSize(java.awt.Dimension(800,400)); % width,height
jWindow.setLocation(java.awt.Point(300,500)); % x,y
Note that the x,y location is the pixel-position of the window's top-left corner, downward & rightward of the top-left monitor corner (unlike Matlab which measures upward from bottom-left, Java measures downward from top-left).
Yair Altman

  2 Comments

Thanks Yair.
I incorporated the code snippit that you suggested. However, I get the following error shown in bold print::
Dot indexing is not supported for variables of this type
when my very short program encounters the script command you suggested:
jWindow.setSize(java.awt.Dimension(800,400)); % width,height
Note that the jWindow object is empty after the command
jWindow = h2.getTopLevelAncestor
I am running MATLAB 2018B.
thanks
Chris
You need to let the new window fully render before retrieving its window handle. You do this with a drawnow and/or pause command. I edited my answer above to reflect this. You can modify the pause duration [or perhaps even eliminate the pause altogether) to suit your specific platform.
Yair Altman

Sign in to comment.