Uhm, for those people who program in Java on Linux,

I'm not really qualified to answer, because I haven't used Java in
a while and I haven't ever used  a GridBagLayout,
but I'm going to guess, and it probably won't be much help you.

All of my speculation is based on guessed semantics from the names
of the classes.

is there any reason that everything here wouldn't stack up nice and clear at least horizontally?

I'm guessing the fill member of the constraints object specifies whether the given control should grow to fill any surplus it has in its cell(s). I'm guessing that the BOTH constant means the control should grow both horizontally and vertically. I'm guessing gridwidth is the number of cells the given control is allocated horizontally (something like colspan in html). Are my assumptions
correct?

I think that the fact the buttons are different widths are a symptom of the problem, not the cause. The grid columns themselves are different widths, and the buttons are configured to fill the entire width of their respective columns. I think if you set the fill member to 0 or NEITHER or NONE or whatever the constant is called, then the buttons would be the same width, but the spacing
would look weird.  Am I right?

Now here is my completely uniformed guess at what might be going wrong:

I think your problem might actually be the labels. They are probably going to try to prevent themselves from wrapping or at least wrapping on non-whitespace as much as they are able. So the columns with labels are probably as wide as the labels, which are probably wider than the other columns, becuase the other columns contain controls that handle small space better
(e.g. the text controls scroll and clip, the buttons shrink, etc..).

If what i'm saying is right, then the first and fourth columns probably have the widest buttons.

Again, though, I want to make it clear to you that I'm just guessing and have no idea if that is
actually the problem.  I don't use Java very much.

Another possible guess: it wants a new contraints object for every add call, and by passing the same reference around you are confusing it? I haven't looked at the documentation, so
I don't know what it expects.

One general note:

        for (int i = 0; i < 5; i++)
        {
            macroFunctionButton[i] = new Button();
            macroFunctionButton[i].setLabel("Function " + i);
g.gridx = i;

I think it would better, if you moved this down a line and changed it
to g.gridx++....


            add(macroFunctionButton[i], g);
}


        g.gridx = 5;

...then this line wouldn't be needed, yes?
--Ray

Reply via email to