MATLAB Answers

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

7 views (last 30 days)
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.

Accepted Answer

Yair Altman
Yair Altman on 23 Jan 2019
Edited: Yair Altman on 24 Jan 2019
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

Christopher Stokely
Christopher Stokely on 24 Jan 2019
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
Yair Altman
Yair Altman on 24 Jan 2019
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.

More Answers (0)

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!