Заполнение окна приложения Java AWT - PullRequest
2 голосов
/ 18 января 2010

Я пытаюсь создать простое приложение AWT на Java. Я хочу, чтобы все контейнеры в главном окне были разделены на биты. Я могу сделать это, установив Hgap и Vgap в конструкторе BorderLayout (см. Ниже.)

Однако я не могу понять, как поставить колпачок между контейнерами и краями главного окна. Как добавить несколько пикселей отступа в главное окно?

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

public class LayoutTest extends Applet {

    public void init() {

        BorderLayout layout = new BorderLayout(8, 8);

        setLayout(layout);

        add(new Button("Left"), BorderLayout.CENTER);
        add(new Button("Right"), BorderLayout.EAST);
    }
}

Ответы [ 3 ]

4 голосов
/ 19 января 2010

Я согласен с другими ответами и рекомендую использовать Swing (используйте вместо этого JApplet), что облегчит все виды вещей (вы можете просто вызвать setBorder и использовать BorderFactory, например, для создания границы), но в вашем случае Вы можете установить вставки, переопределив getInsets:

   @Override
   public Insets getInsets()
   {
      return new Insets(10,10,10,10);
   }

Замените 10 на то, что вам нравится.

Кажется, что нет сеттера, или я бы сказал, чтобы использовать его вместо этого. Если в случае апплета AWT есть лучший способ сделать это, кто-нибудь, пожалуйста, исправьте меня.

Если вы решили использовать Swing, см .: Как использовать границы

1 голос
/ 18 января 2010

AWT не самая новая технология на блоке. Поэтому, если у вас нет особых требований для работы в AWT, я бы порекомендовал вам проверить современные замены Swing или SWT - гораздо более удобные, гибкие, настраиваемые и предсказуемые в их поведении чем AWT.

Одной из причин их разработки было именно то, что визуальная подстройка, которую вы пытаетесь сделать здесь, излишне трудна (если не невозможна) с AWT.

0 голосов
/ 19 января 2010

Хотя вы, вероятно, можете избежать установки insets апплета, я предлагаю перейти к Swing (продлить javax.swing.JApplet). Затем установите JPanel в качестве панели содержимого с набором EmptyBorder соответствующей ширины.

Также обратите внимание, что вам, вероятно, придется быстро перейти на более сложный менеджер раскладки, такой как GridBagLayout.

...