[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 486
  • Last Modified:

Resizing applet in the browser

I have an applet which runs in one of the frames of a multiframe HTML page. When the browser window gets resized, the browser resizes the frames accordingly but the applet does not get resized. looks like applet does not know of its container being resized.

What's the proper browser independent way of making sure that the applet gets resized along with the browser window?
0
msmolyak
Asked:
msmolyak
1 Solution
 
eugenemCommented:
AFAIK, you cannot resize applet in browser because applet size is specified by parameters in </applet> tag.
0
 
kollegovCommented:
Browsers allow to use % instead of
absolute pixels sizes

<APPLET CODE=check1.class
 WIDTH="50%"
 HEIGHT="50%">
</APPLET>

just checked it with my Netscape3.02Gold win95
and it work at least in this browser.
MIE3.02 screwed up on it :(.

Sure applet should get it sizes each time
it makes repainting to fit new sizes.

Most of referenses says: not allowed, but
you see it's not true. I'd better say not supposed
to give you this ability, but some browsers give
it to you.

Sure if want to have browser independent way
you do not have this ability.
 

0
 
msmolyakAuthor Commented:
Based on my experimanetation with applet resizing I found out that the applet resizes correctly in the frame in MS IE 3.x but does nor resize in Netscape 3.x and 4.x unless you explicitly reload the frame.
Based on kollegov's answer in Javascript group I put a resize event handler in Netscape 4.x so that the applet is reloaded each time the browser or frame window is resized.
I tried to get a parent container of the applet and observe what happens to it. In Netscape it gets sized when the applet is initialized or reloaded and the browser does not bother to resize it when the browser window gets resized.
Any idea why such simple and obvious resizing support is missing?
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
msmolyakAuthor Commented:
Having to choose between the two proposed answers I would opt to give points to kollegov (you can claim the points).
0
 
toml032697Commented:
Here is a small piece of code which resizes an applet in the browser it works fine in both Netscape and IE 3.x. This code doesn't work very well in IE4.0 (you have to make the browser window smaller and reload and then making it larger then it will resize it properly). In IE 4.0 you can use setBounds() it should work, but I've not tested it. But here is the code which works in Netscape and IE 3.x:

import java.applet.*;
import java.awt.*;

public class Resize extends Applet {
  Dimension dim;
  Panel p=new Panel();

  public void init() {
    dim=size();

    p.setLayout(new BorderLayout());
    p.add(new Button("Hello, world!"));

    setLayout(null);
    add(p);
  }

  public void start() {
    Container container=super.getParent();
    container.resize(getToolkit().getScreenSize());
    resize(getToolkit().getScreenSize());
    p.resize(dim=new Dimension(p.minimumSize()));
  }

  public void paint(Graphics g) {
    Rectangle r=g.getClipRect();

    if((r.x==0)&&(r.y==0)&&
      ((dim.width!=r.width)||(dim.height!=r.height))) {
      p.resize(dim.width=r.width,dim.height=r.height);
      validate();
    }
  }
}

The idea in this small applet is that the applet is resized so that it will be larger than the applet ever will be. So I chose to resize it to the same as the screen resolution. Then you get the visible are of the applet with getClipRect() and resize the applet to the same size.

There are some "bugs" in this implementation. If you move another window so that it partly overlaps the applet and then minimizes the window then the applet is resized to the size of the non-overlaping area. This can be fixed by doing an extra repaint after the applet have been resized.

           -Tom
0
 
msmolyakAuthor Commented:
Tom,

Thank you for an answer, it seems to behaving much better than anything I've seen before.  One question though. I noticed that when you resize the browser (I used Navigator 4.03) in horizontal direction, it resizes correctly. However, when you resize the browser vertically, the applet does not change size. Any ideas?

Michael
0
 
toml032697Commented:
Yes, I know that. I think that it is a bug in Netscape, as it never calls resize() when the browser window is resized vertically (applies to all versions of Navigator). I suppose that the reason is that HTML doesn't need to be reformated to fit the window and per cent based resizing of applets is a undocumented feature.

      -Tom
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now