Слоистые объекты (расширяющие JComponet) в JApplet

В настоящее время у меня есть JApplet, в который я добавляю два объекта, расширяющих JComponet. Объект A в основном представляет собой большой квадрат, а объект B - маленький квадрат, мне нужно, чтобы объект B всегда находился перед объектом A, однако я не могу понять, как установить слои в JApplet для этого. В настоящее время я использую следующий код, который добавляет оба элемента и отображает их так, как я хочу, однако иногда объект A находится перед объектом B.

public void init() {
    add(myapplet, BorderLayout.CENTER);
    resize(200, 400);
    B = new Block(Color.green, 10, 10);
    myapplet.add(B);
    A = new Block(Color.red, 100, 100);
    myapplet.add(A);
    myapplet.addMouseListener(this);
    startTimer();
}

person Zac Powell    schedule 07.12.2012    source источник


Ответы (2)


Вы можете посмотреть на JLayeredPane, увидеть здесь или OverlayLayout, см. здесь . Любой из них должен работать в апплете, но этот гибридный подход может обеспечить дополнительную гибкость.

JLayeredPane

OverlayLayout

person trashgod    schedule 07.12.2012
comment
Если попробовать JLayeredPane, апплет запустится, но ничего не отобразит, моя инициализация теперь выглядит так: pastebin.com/Bct9dVsb< /а> - person Zac Powell; 09.12.2012
comment
Слишком многого не хватает; отредактируйте свой вопрос, включив в него sscce, который показывает ваш текущий подход. - person trashgod; 10.12.2012

Вы можете взглянуть на этот метод: Container.setComponentZOrder(Компонент компонента, индекс int)

person Nemanja    schedule 07.12.2012
comment
Я добавил myapplet.setComponentZOrder(B, 0); myapplet.setComponentZOrder(A, 1);, но получил java.lang.IllegalArgumentException: component and container should be in the same top-level window - person Zac Powell; 07.12.2012