How to resize a java applet when the browser is resized?
Asked Answered
H

2

8

I have a java applet that is embedded in html using the object-comment-embed method. I would like to resize the applet whenever the browser window is resized. I have found solutions around the internet, but they all work based on the deprecated applet tag.

Also, when trying a setSize() call on my embed element in FireBug, it will resize the content of the applet, but not the applet viewport. That is, the area of the display that is given over to java does not change.

Current code looks something like this:

<object
    id='MyApplet1'
    width='300' height='200'
    classid='clsid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    codebase='http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab#Version=1,6,0,0'>
    <param name='type' value='application/x-java-applet;version=1.6'>
    <param name='scriptable' value='false'>
    <param name='codebase' value='foo'>
    <param name='code' value='bar'>
    <param name='archive' value='baz'>
    <param name='arg1' value='A'>
    <param name='arg2' value='B'>
    <comment>
        <embed
            id='MyApplet2'
            width='300' height='200'
            pluginspage='http://java.sun.com/products/plugin/index.html#download'
            type='application/x-java-applet;version=1.6'
            scriptable='false'
            codebase='foo'
            code='bar'
            archive='baz'
            arg1='A'
            arg2='B'>
            <noembed>
            </noembed>
        </embed>
    </comment>
</object>
<script type="text/javascript"> 
function resize() {
  min_width = 300;
  min_height = 200;
  frame_width = 0;
  frame_height = 0;
  if(parseInt(navigator.appVersion) > 3) {
    if(navigator.appName=='Netscape') {
      frame_width = window.innerWidth;
      frame_height = window.innerHeight;
    }
    if (navigator.appName.indexOf('Microsoft') != -1) {
      frame_width = document.body.offsetWidth;
      frame_height = document.body.offsetHeight;
    }
  }
  frame_width *= 0.78;
  frame_height *= 0.78;
  applet_width = frame_width > min_width ? frame_width : min_width;
  applet_height = frame_height > min_height ? frame_height : min_height;
  document.getElementById('MyApplet1').setSize(applet_width, applet_height);
  document.getElementById('MyApplet2').setSize(applet_width, applet_height);
}
window.onResize = resize;
window.onLoad = resize;
</script> 
Hemia answered 17/12, 2008 at 16:59 Comment(1)
does your resize function get called? (e.g. where is the error so far?)Amphicoelous
D
4

Try replacing these lines:

document.getElementById('MyApplet1').setSize(applet_width, applet_height);
document.getElementById('MyApplet2').setSize(applet_width, applet_height);

with:

document.getElementById('MyApplet1').style.height = applet_height + "px";
document.getElementById('MyApplet1').style.width = applet_width + "px";

document.getElementById('MyApplet2').style.height = applet_height + "px";
document.getElementById('MyApplet2').style.width = applet_width + "px";
Disorientate answered 17/12, 2008 at 17:13 Comment(2)
My vote is for this method. I've basically done this same thing to resize ActiveX controls. It should work the same for an Applet.Upchurch
This worked! I was doing the same thing, using setSize(). It was being called but the applet wasn't resizing. Thanks!Drusy
T
1

Why don't you use percentage width and height. I usually use the following code for my applets:

<applet codebase="http://localhost:89" archive="npaxet?version=0.0.1.28" code="main.NPaxet.class" width=100% height=90%>\
<PARAM NAME="thumbnailUrl" VALUE="http://localhost:89/thumbnail?seriesid=%s">
<PARAM NAME="dicomUrl" VALUE="http://localhost:89/dicom?imageid=%d">
<PARAM NAME="seriesCount" VALUE="11">
...
</applet>
Terse answered 22/11, 2011 at 6:39 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.