2010-01-18 2 views
2

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

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

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); 
    } 
} 

ответ

4

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

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

Замените 10 на все, что захотите.

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

Если вы решили использовать Swing, см.: How to Use Borders

+0

Спасибо! Это исправление отлично работает. Я думаю, что в конечном итоге я могу пойти на Swing из-за различных предложений. – Tom

+0

+1 работает хорошо, как дополнение, например, CSS. 'JPanel test = new JPanel() {public insets getInsets() {вернуть новые вставки (10, 10, 10, 10); }}; ' – YumYumYum

1

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

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

0

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

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

Смежные вопросы