d出菜单的问题在于它可能被实现为顶级容器(Window),并且窗口是不透明的,无论您用setOpaque()设置了什么值(不透明)。但是窗口也可以做成半透明的。
您可以通过强制使用重量级d出窗口并残酷地更改其不透明度来 破解 它。尝试以下作为实验(Java7)的基础:
import java.awt.Window;import javax.swing.JPopupMenu;import javax.swing.SwingUtilities;public class TranslucentPopup extends JPopupMenu { { // need to disable that to work setLightWeightPopupEnabled(false); } @Override public void setVisible(boolean visible) { if (visible == isVisible()) return; super.setVisible(visible); if (visible) { // attempt to set tranparency try { Window w = SwingUtilities.getWindowAncestor(this); w.setOpacity(0.667F); } catch (Exception e) { e.printStackTrace(); } } }}
请注意,它 不会 使半菜单透明!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)