Basic custom layout manager question


S

Sam Takoy

Hi,

I'm writing a custom layout manager and here's what I don't understand.

My experience tells that, generally speaking, there are two modes of
layout. One, when the layout happens for the first time and all elements
assume the size that they would most like.

In the second mode, when the user resizes the JFrame, all elements
inside just need to deal.

So, in layoutContainer(Container parent), how do I know what mode it is?

I guess the difference b/w the two modes is that in the former, I tell
the parent what size to become. In the latter, the parent tells its
children what size it wants to be.

So how do I tell?

Many thanks in advance,

Sam
 
Ad

Advertisements

J

Jeff Higgins

Hi,

I'm writing a custom layout manager and here's what I don't understand.

My experience tells that, generally speaking, there are two modes of
layout.

Please be specific.
One, when the layout happens for the first time and all elements
assume the size that they would most like.

In the second mode, when the user resizes the JFrame, all elements
inside just need to deal.

So, in layoutContainer(Container parent), how do I know what mode it is?

I guess the difference b/w the two modes is that in the former, I tell
the parent what size to become. In the latter, the parent tells its
children what size it wants to be.

Please provide a pointer to the description of these modes in the
documentation for the specific framework with which you are working.
So how do I tell?

Read the documentation?
 
G

Gene

Hi,

I'm writing a custom layout manager and here's what I don't understand.

My experience tells that, generally speaking, there are two modes of
layout. One, when the layout happens for the first time and all elements
assume the size that they would most like.

In the second mode, when the user resizes the JFrame, all elements
inside just need to deal.

So, in layoutContainer(Container parent), how do I know what mode it is?

I guess the difference b/w the two modes is that in the former, I tell
the parent what size to become. In the latter, the parent tells its
children what size it wants to be.

So how do I tell?

Many thanks in advance,

Sam

This doesn't make much sense. The layout must take a given container
size and lay out/resize the contained components to fit. This is the
pack() operation. Whether the container is being drawn initially or
after a resize makes no difference at all.
 
S

Sam Takoy

This doesn't make much sense. The layout must take a given container
size and lay out/resize the contained components to fit. This is the
pack() operation. Whether the container is being drawn initially or
after a resize makes no difference at all.

Doesn't the pack() operation go "inside-out". In other words, the
contained components suggest to the container what size it should be?
 
M

markspace

Sam said:
Doesn't the pack() operation go "inside-out". In other words, the
contained components suggest to the container what size it should be?


I looked at this recently, due to someone else's question, and the
answer turns out to be "no." As near as I can tell from examining the
code, all operations are strictly "top down" from the root container to
each of it's components to each of their components.

Thus, both the initial "size" and the subsequent "resize" is the same,
from the layout manager's point of view.
 
Ad

Advertisements

S

Sam Takoy

I looked at this recently, due to someone else's question, and the
answer turns out to be "no." As near as I can tell from examining the
code, all operations are strictly "top down" from the root container to
each of it's components to each of their components.

Thus, both the initial "size" and the subsequent "resize" is the same,
from the layout manager's point of view.

So, perhaps pack() has some special features on top of the layout logic?
 
M

markspace

Sam said:
So, perhaps pack() has some special features on top of the layout logic?


Not really. I think it just calls preferredLayoutSize(Container) first,
to set its own bounds, then it lays out the container with those same
bounds. (This is a good reason for a layout manager to cache results.)

It doesn't matter though. Just implement your LayoutManager according
to the Java docs and the rest will work out. Only if you're
implementing a top level window yourself, it might matter.
 
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top