Исходный код в вопросе выглядит так:
И вы хотите, чтобы он отображался так, верно?
Хорошо ... Я сделал это изображение, добавив эти строки после строки add(new Button("Button4"), gc);
. (Порядок, в котором вы добавляете Components
, похоже, не влияет на результат.)
//First, let us tell AWT to figure out the sizes of components
// it has so far. If we do not do this, calls to getWidth()
// will return 0 sometimes! It appears to be a race condition,
// but that's why this layoutContainer method exists.
bl.layoutContainer(this);
//Now, let us target the missing grid cell.
gc.gridx = 0;
gc.gridy = 1;
//Let us put something in there, so the whole column has a
// non-zero width. Using the width of an existing button
// is better than just picking some number of pixels.
add(Box.createHorizontalStrut(this.getComponent(2).getWidth()),gc);
//Let us adjust the applet window size (optional)
this.setSize(this.getComponent(2).getWidth() * 4, 200);
Готовы ли вы поместить невидимый компонент в эту позицию в сетке, или вам нужно решить это по-другому?