Как заставить Java Canvas выглядеть поднятым из своего контейнера
-
11-07-2019 - |
Вопрос
У меня есть простой 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, для которого можно установить границу.