当前位置: 首页 > 面试题库 >

如何使JPopupMenu透明?

丌官皓君
2023-03-14
问题内容

我想自定义外观,JPopupMenu因此我创建了一个自定义类,扩展了JPopupMenu类,从而覆盖了该paintComponent方法,就像我对需要自定义的任何组件所做的那样。

public class CustomPopupMenu extends JPopupMenu {

    @Override
    public paintComponent(Graphics g) {
        //custom draw
    }
}

我唯一正确知道的问题是我无法JPopupMenu透明。我虽然setOpaque(false)足够,但我错了。

我该如何做JPopupMenu透明的?


问题答案:

弹出菜单的问题在于它可能被实现为顶级容器(Window),并且窗口是不透明的,无论您用setOpaque()设置了什么值(不透明)。但是窗口也可以做成半透明的。

您可以通过强制使用重量级弹出窗口并残酷地更改其不透明度来 破解 它。尝试以下作为实验(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();
            }
        }
    }

}

请注意,它 不会 使半菜单透明!



 类似资料:
  • 问题内容: 如何使JFrame透明?我想使我的JFrame透明。当我的JFrame位于顶部时,用户应该会看到背景。 问题答案: 如果您对使用受限的API类没有异议,则可以使用该类的类和方法来实现。这里和这里是有关如何使用它的教程?而这里是使用Java本地接入的版本。 代码示例

  • 介绍 (Introduction) 弹出菜单表示一个菜单,可以在组件内的指定位置动态弹出。 Class 声明 (Class Declaration) 以下是javax.swing.JPopupMenu类的声明 - public class JPopupMenu extends JComponent implements Accessible, MenuElement 类构造函数

  • 主要内容:1 Java JPopupMenu的介绍,2 Java JPopupMenu的声明,3 Java JPopupMenu的构造方法,4 Java JPopupMenu的案例1,5 Java JPopupMenu的案例21 Java JPopupMenu的介绍 PopupMenu可以在组件内的特定位置动态弹出。它继承了JComponent类。 2 Java JPopupMenu的声明 我们来看一下javax.swing.JPopupMenu类的声明。 3 Java JPopupMenu的构

  • 我遇到了让情节本身透明的方法,但是我如何让背景透明呢?没有Qt有办法做到这一点吗?我希望情节在背景窗口上,例如,假设我正在运行Chrome,我希望情节在chrome窗口上,其内容可见。

  • 在iOS 7上,将UISearchBar设置为半透明并不会使搜索栏半透明。有什么我不明白的吗?我正在将它添加到UIViewController,它是UINavigationController的一部分。有一个与顶部布局指南对齐的UITableView。导航栏很好,半透明,但由于某些原因,搜索栏是纯色的。

  • 有人知道如何使用React Native使Android状态栏透明吗? 不透明,透明。 我也在使用react导航。