Wie man eine Java-Leinwand aussieht aus seinem Behälter angehoben
-
11-07-2019 - |
Frage
Ich habe eine einfache GUI-Komponente in Java geschrieben. Die Klasse zieht eine analoge Uhr in einer java.awt.canvas.
Diese Leinwand wird dann in einem JFrame enthalten - Was ich tun möchte, ist der Leinwand einen 3d „angehoben“ Effekt geben - fast wie ein Schlagschatten auf ein Foto hinzufügen.
Gibt es eine einfache Möglichkeit, dies zu tun?
Lösung
Wenn Sie eine JFrame verwenden, dann haben Sie zwei Möglichkeiten:
-
Fügen Sie Ihre eigene Komponente zu einem JPanel und dann dies den JFrame hinzuzufügen.
-
Statt von java.awt.Canvas vererben, können Sie von JComponent erben. Dann würden Sie tun müssen, um alle Ihre Malerei in der paintcomponent () Methode, anstatt nur malen () (Sie können Sie die aktuelle paint-Methode umbenennen).
In beiden Fällen können Sie jetzt eine gemeinsame Grenze mit der setBorder () Methode gesetzt (auf der JPanel oder Ihre Komponente) können Sie von BorderFactory erhalten.
Siehe auch: Wie Borders verwenden
Andere Tipps
Wenn Sie ein Swing-Element verwendet hat, werden Sie den createRaisedBevelBorder () -Methode des BorderFactory verwenden und die Leinwand Grenze zur resultierenden Grenze. Canvas ist eine AWT-Komponente, so dass Sie es in einer Swing-Komponente wickeln müssen, an denen Sie die Grenze festlegen.