我正在做一个应用程序,我得出的结论是,我想让面板既有一个盒子的阴影和圆角,我已经通过了一堆已经回答的问题,但我没有成功。
我有:
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.setBorder(new DropShadowBorder());
super.paintComponent(g);
Graphics2D graphics = (Graphics2D) g;
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
graphics.setColor(Color.white);
graphics.fillRoundRect(0, 0, getWidth() - 1, getHeight() - 1, 10, 10);
}
};
这导致:
我想要的是
请帮帮忙
1条答案
按热度按时间jq6vz3qz1#
实际上,这是非常复杂的,至少如果你想让它看起来“酷”的话。
在我开始之前,我不会使用
Border
,你可以看看有没有一种方法可以使我的地址栏的JTextField更大和更弯曲的原因。通常,我使用JH Labs image filters来生成模糊的阴影,但是对于以下内容,我将其删除,以便您可以在没有依赖项的情况下运行它。
首先,您需要一些“支持”功能。
这是一个相对简单的工作很多功能-它产生一个阴影从提供的图像或形状。它通过图像掩蔽过程来实现这一点。
我们来做个快速测试。。
现在,这将产生...
好了,任务完成!
好吧,不完全是。我们真正需要的是一个“复合”组件。这是一个,它将包含和管理圆形边框和阴影,但也允许使用添加组件,这不会“溢出”边框,也许像...
这有点复杂,重要的是要注意他们是一个单独的
contentPane
,所有其他组件都应该添加到其中。比如...
现在,一个聪明的人应该意识到,你实际上可以画
RoundedRectangle
两次,一次是阴影,一次是填充,这将是一个完全有效的方法,除了,我会包括模糊阴影,因为它“看起来”更好(恕我直言)有没有办法可以模糊投影?
如前所述,答案是基于JPanel投影,它使用JH Labs image filters来产生模糊。
如果你想重新启用模糊,那么你需要从JH Labs下载
Filters.jar
,并将其链接到你的项目(不打算描述如何做到这一点)。完成后,修改
ImageUtilities
类的generateBlur
方法以恢复和
将再次实施线条和模糊。