Java 未装饰的JFrame阴影
如何将阴影添加到未装饰的jframe 从我在网上发现的情况来看,您可能可以将jframe添加到另一个黑色半透明窗口,以提供阴影效果。 或者以某种方式将类似的内容应用于JFrame:Java 未装饰的JFrame阴影,java,swing,jframe,shadow,Java,Swing,Jframe,Shadow,如何将阴影添加到未装饰的jframe 从我在网上发现的情况来看,您可能可以将jframe添加到另一个黑色半透明窗口,以提供阴影效果。 或者以某种方式将类似的内容应用于JFrame: Border loweredBorder = new EtchedBorder(EtchedBorder.LOWERED); setBorder(loweredBorder); 无论是哪种方式,我只想知道最好的方法,或者是一种完全不同的方式,获得相同的效果,就像从另一个类而不是jframe扩展一样。
Border loweredBorder = new EtchedBorder(EtchedBorder.LOWERED);
setBorder(loweredBorder);
无论是哪种方式,我只想知道最好的方法,或者是一种完全不同的方式,获得相同的效果,就像从另一个类而不是jframe扩展一样。
我是Java新手,所以我可能走错了方向,所以任何建议都很感激 基本上,您需要制作一系列层
JFrame
ShadowPanel
- 和内容
frame.setBackground(new Color(0, 0, 0, 0));
如果您不同时使用以下命令,则该命令无效:
frame.setOpacity(1.0f);
将默认关闭操作设置为在CLSE上退出是错误的,应用程序应在两个进程结束时自然关闭,因此在CLSE上处置是正确的方法,保留另一个以“修复”错误
如果同时使用(和之后使用),则无效:
ShadowPanel的构造函数应以以下内容开始:
super(new GridBagLayout());
而不是:
setLayout(new GridBagLayout());
另外,使用GridBagLayout只添加单个组件有点不成比例,不是吗?那么GridLayout(1,1)或者甚至是懒惰的BorderLayout呢
在每次调用时返回一个新的尺寸,首选尺寸(其中许多尺寸是由机器在大量操作期间完成的,如重新喷漆等)非常昂贵。您应该返回构造函数或类中定义的变量
为什么要覆盖getPreferredSize(),而不是getBackground()或isOpaque()
GraphicsD应该放在try块中,然后在finally块中进行处理。从技术上讲,您不能向任何其他容器添加框架,但想法是正确的……甚至连JInternalFrame都没有?
JInternalFrame
本身就是一个容器,而不像JFrame
(或任何扩展JWindow
)
frame.add(panel);
super(new GridBagLayout());
setLayout(new GridBagLayout());