views:

2097

answers:

1

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'&gt;
    <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>
+2  A: 

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;
document.getElementById('MyApplet1').style.width = applet_width;

document.getElementById('MyApplet2').style.height = applet_height;
document.getElementById('MyApplet2').style.width = applet_width;
Jack
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.
rally25rs