Как заставить Java Canvas выглядеть поднятым из своего контейнера

StackOverflow https://stackoverflow.com/questions/199575

Вопрос

У меня есть простой GUI-компонент, написанный на Java. Класс рисует аналоговые часы в java.awt.canvas.
Этот холст затем содержится в JFrame - я хочу дать холсту 3d "поднято". эффект - почти как добавление тени к фотографии. Есть ли простой способ сделать это?

Это было полезно?

Решение

Если вы используете JFrame, у вас есть два варианта:

<Ол>
  • Сначала добавьте свой собственный компонент в JPanel, а затем добавьте его в JFrame.

  • Вместо того, чтобы наследовать от java.awt.Canvas, вы можете наследовать от JComponent. Тогда вам нужно будет выполнить всю рисование в методе paintComponent () вместо просто paint () (вы можете просто переименовать текущий метод рисования).

  • В обоих случаях вы теперь можете установить границу с помощью метода setBorder () (в JPanel или вашем компоненте), который вы можете получить из BorderFactory.

    См. также: Как использовать границы

    Другие советы

    Если бы вы использовали элемент Swing, вы бы использовали метод createRaisedBevelBorder () из BorderFactory и установили границу холста на результирующую границу. Canvas - это компонент AWT, поэтому вам нужно будет обернуть его в компонент Swing, для которого можно установить границу.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top