0 0

AWTUtilities.setWindowOpaque(frame, false)透明化窗体后,右键菜单无法显示5

右键菜单仅显示背景,无文字(图1),鼠标经过以后就能显示出来了(图2)


图1


图2

另外使用截图工具(飞Q自带的)的时候程序界面会消失,请问如何解决


import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.nimbus.NimbusLookAndFeel;

import com.sun.awt.AWTUtilities;

public class Test {

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				try {
					UIManager.setLookAndFeel(NimbusLookAndFeel.class
							.getCanonicalName());
				} catch (Exception e) {
				}
				final JFrame frame = new JFrame();
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setSize(256, 256);
				Toolkit toolkit = Toolkit.getDefaultToolkit();
				Dimension screenSize = toolkit.getScreenSize();
				frame.setLocation((int) screenSize.getWidth() - 256,
						(int) screenSize.getHeight() - 256 - 30);
				frame.setAlwaysOnTop(true);

				frame.setUndecorated(true);
				AWTUtilities.setWindowOpaque(frame, false);
				frame.setContentPane(getContentPane());
				frame.setVisible(true);
			}
		});
	}

	private static JPopupMenu getPopupMenu() {
		JPopupMenu popup = new JPopupMenu();
		popup.add(new AbstractAction("退出") {
			private static final long serialVersionUID = -4198075797720348164L;

			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		return popup;
	}

	private static JPanel getContentPane() {
		JPanel pane = new JPanel() {
			private static final long serialVersionUID = 1757134896767627687L;

			@Override
			protected void paintComponent(Graphics g) {
				try {
					Image img = ImageIO.read(getClass().getResource("256.png"));
					g.drawImage(img, 0, 0, this);
				} catch (IOException e) {
				}
				// super.paintComponent(g);
			}
		};
		pane.setComponentPopupMenu(getPopupMenu());
		return pane;
	}
}


2012年2月03日 16:57
  • 大小: 109.7 KB
  • 大小: 102 KB
目前还没有答案

相关推荐

    java 右键菜单

    代码可以实现单击右键,出现浮动菜单// New project menu item JMenuItem menuItem = new JMenuItem("New Project...", new ImageIcon("images/newproject.png")); menuItem.setMnemonic(KeyEvent.VK_P); ...

    禁用页面及页面所有frame内的右键菜单

    NULL 博文链接:https://zyn010101.iteye.com/blog/1571172

    python用WxPython库实现无边框窗体和透明窗体实现方法详解

    wxPython是Python语言的一套优秀的GUI图形库。允许Python程序员很方便的创建完整的、功能键全的GUI...class Frame(wx.Frame): def __init__(self):#,pos=(0,0) wx.Frame.__init__(self,None,title = u"",pos=(10,10)

    Mysql的.Netframe4.0版本

    包含Mysql.Data的5个dll文件,.netframe4.0版本。亲自测试引用成功。

    java透明窗体

    继承与java.swing.Frame类的透明窗体类,实现了窗口的透明,还存在一点点小BUG,欢迎交流。

    23.Xaml Frame控件->导航控件

    23.Xaml Frame控件->导航控件

    VB 控件随窗体自动调整大小.rar

    VB 控件随窗体自动调整大小,像窗口中的ListBox、Image、FileListBox、VB.Frame控件等,都可以随窗口的大小变化而变化,当用户拖动改变窗口大小时,这些控件的大小也会随之改变,这个功能的实现得益于自定义函数Form...

    ios自定义下拉菜单Demo

    ios自定义下拉菜单Demo,非常简单的例子,直接使用就可以的。 if (showList) {//如果下拉框已显示,什么都不做 return; }else {//如果下拉框尚未显示,则进行显示 CGRect sf = self.frame; sf.size.height = ...

    disk.frame:用于大于RAM数据的基于磁盘的快速并行数据处理框架

    {disk.frame}的作用类似于分布式系统(例如Apache Spark,Python的Dask和Julia的JuliaDB.jl)用于中等数据,这些数据对于RAM而言太大,但不足以容纳大数据。 安装 您可以使用以下方法从安装{disk.frame}的发行版本:...

    .netframe4.0 c#

    .net c# 可跨平台运行,包括编译器、类库lib

    Javascript,Html,Css,Frame框架整合的菜单样式

    Javascript,Html,Css,Frame,Frameset框架整合的菜单,左则菜单可以收缩,上面菜单有并排的子菜单!

    javascript页面代码防止frame禁止右键

    页面代码防止frame禁止右键 拿来就可以使用方便快速

    仿QQ登录窗体,拉伸展开!

    // 显示窗体的登录进度面板 getGlassPane().setVisible(true); } }*/ public static void main(String[] args) { try { UIManager .setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel")...

    Android菜单框架Cangol-UIFrame.zip

    Cangol-UIFrame 是一款App UI 框架,用于Android应用。 示例代码: package mobi.cangol.mobile.uiframe.demo;  import mobi.cangol.mobile.base.BaseActionBarActivity;  import mobi.cangol.mobile....

    跨Frame下拉菜单

    跨Frame下拉菜单跨Frame下拉菜单跨Frame下拉菜单

    .NetFrame 4.6.1离线安装包

    适用于 Windows 7 SP1、Windows 8、Windows 8.1、Windows 10、Windows Server 2008 R2 SP1、Windows Server 2012 和 Windows Server 2012 R2 的 Microsoft .NET Framework 4.6.1(脱机安装程序)

    nut80.dat frame.py所需数据

    frame.py所需数据用以旋转The-Transformation-of-Coordinate-system-TEME-to-ECI-TEME-to-ECEF-ECEF-to-ECI

    VB多样式窗体Frame框架控件源码.rar

    VB多样式窗体Frame框架控件源码,支持9种风格,本控件自带示例,通过示例你可亲自预览一下这几款样式的框架效果,每一个示例都包括jcFrame所有的属性应用,并可对主要激活的属性、当前样式进行编辑,重新显示样式,...

    VB透明窗体制作例子.rar

    VB透明窗体制作例子,透明度在代码中可自定义,可完全透明,也可不透明,也就是变成常规窗体,采用了API函数,无第三方函数,在VB6.0环境下可直接对源代码编译运行。窗口透明效果请参见源码测试截图。

    Uninstall.netframe

    来自微软员工的net framework 4卸载工具

Global site tag (gtag.js) - Google Analytics