我有一个用Java编写的简单GUI组件。该类在java.awt.canvas中绘制模拟时钟。
然后这个画布被包含在一个JFrame中——我想做的是给画布一个三维的"凸起"效果——几乎就像给照片添加一个阴影一样。有简单的方法吗?
如果您使用的是JFrame,那么您有两个选项:
-
首先将您自己的组件添加到JPanel中,然后将其添加到JFrame中。
-
您可以从JComponent继承,而不是从java.awt.Canvas继承。然后,您必须在paintComponent()方法中进行所有绘制,而不仅仅是paint()(您可以重命名当前的绘制方法)。
在这两种情况下,您现在都可以使用setBorder()方法(在JPanel或您的组件上)设置边界,您可以从BorderFactory获得。
另请参阅:如何使用边界
如果您使用的是Swing元素,您可以使用BorderFactory的createRaisedBivelBorder()方法,并将画布的边界设置为生成的边界。Canvas是一个AWT组件,因此您需要将其封装在Swing组件中,以便设置边界。