0 0

java中如何实现在1个窗体上显示一个上浮的半透明窗体 20

RT~大致的场景是这样的,例如1个播放器窗口正播放电影,然后沿这个窗口的右下角慢慢上浮1个半透明效果的窗体,显示获得的文字消息。最好是基于swt或者swing的。
OO 
2008年6月27日 22:17

4个答案 按时间排序 按投票排序

0 0

采纳的答案

解答1: 上浮

你直接for循环的setlocation就可以了

while (getLocation().x < 300) {
   setLocation(new Point(getLocation().x + 5, 100));
//    try {
// Thread.currentThread().sleep(100); // 如果你觉得它跑太快的话
//    }catch (InterruptedException e) {
// e.printStackTrace();
//    }
}

2008年6月28日 14:02
0 0

所以, 你的代码将会是这样的

		while (getLocation().x < 300) {
			setLocation(new Point(getLocation().x + 5, 100));
			resetShell();
		}

		this.resetShell();

		OS.FreeLibrary(hInst);

2008年6月28日 14:07
0 0

最后一段代码显示有问题,重贴:

OS.CallWindowProc(fun, this.handle, 0x02000000 | (red & 0xFF) | ((green & 0xFF) << 8 ) | ((blue & 0xFF) << 16 ), 30, 2);

2008年6月28日 14:06
0 0

解答2: 透明

	private int fun = 0;
	private int hInst = 0;

	private boolean firstInvoke = true;

	private void resetShell() {
		// 窗口透明
		if (firstInvoke) {
			OS.SetWindowLong(this.handle, OS.GWL_EXSTYLE, OS.GetWindowLong(this.handle, OS.GWL_EXSTYLE) ^ 0x80000);

			TCHAR lpLibFileName = new TCHAR(0, "User32.dll", true);
			hInst = OS.LoadLibrary(lpLibFileName);
			if (hInst != 0) {
				String name = "SetLayeredWindowAttributes\0";
				byte[] lpProcName = new byte[name.length()];
				for (int i = 0; i < lpProcName.length; i++) {
					lpProcName[i] = (byte) name.charAt(i);
				}
				fun = OS.GetProcAddress(hInst, lpProcName);
			}

			firstInvoke = false;
		}

		if (fun != 0) {
			int red = this.getBackground().getRed();
			int green = this.getBackground().getGreen();
			int blue = this.getBackground().getBlue();

			// 最后一位是1的话, 则前面的 999参数被忽略, 窗体是根据前面指定的颜色,将该颜色全透明,其他颜色不透明.
			// 最后一位是2的话, 则前面的 999参数有效, 是指整个窗体的透明度.
			OS.CallWindowProc(fun, this.handle, 0x02000000 | (red & 0xFF) | ((green & 0xFF) << 8) | ((blue & 0xFF) << 16), 30, 2);
		}
	}


在for循环的setLoction后,调用这句:
OS.FreeLibrary(hInst);


请注意: java去调用lib很费时间,所以,需要将调用lib的动作只做一次,在所有都结束后再释放lib.

2008年6月28日 14:04

相关推荐

    java实现透明窗体

    在Java编程语言中,创建一个透明的窗体是一项有趣且实用的技术,它可以为应用程序提供...通过阅读和学习这个示例,你可以更深入地理解Java中窗体透明化的实现方法,并将其应用到自己的项目中,提升应用程序的视觉效果。

    c# 实现半透明渐显窗体

    在C#编程中,创建一个具有半透明效果和渐显动画的窗体是一个常见的需求,尤其是在设计现代用户界面时。半透明窗体可以为应用程序增添时尚感和专业性,而渐显效果则能够平滑地引导用户的注意力。下面将详细解释如何在...

    在一个窗体中打开另一个窗体

    在“在一个窗体中打开另一个窗体”这个场景中,描述提到要在当前窗体上添加一个按钮。在代码层面,这通常涉及到以下几个步骤: 1. **设计阶段**:使用Visual Studio等开发工具,在窗体设计器中拖放一个`Button`控件...

    WPF实现窗体透明、半透明、自定义形状

    1. **窗体透明与半透明** WPF 提供了 `Window` 类的 `Opacity` 属性,用于设置窗口的整体不透明度。值为 1 表示完全不透明,0 表示完全透明。介于 0 和 1 之间的值则表示不同程度的半透明。例如,`Opacity="0.5"` ...

    C#中在一个窗体里调用另一个窗体的方法

    当需要在一个窗体中调用另一个窗体时,可以通过实例化目标窗体的方式来实现。例如,在`FormReportList`中创建`FormPubs`对象: ```csharp public FormPubs fp; public FormReportList(FormPubs f) { fp = f; ...

    pb8实现窗体半透明悬浮效果

    在PB8中实现窗体的半透明悬浮效果,可以让程序界面更具现代感和用户友好性。这种效果通常用于创建如托盘小窗口、浮动工具栏或者状态提示窗口等应用场景,让用户在进行其他操作时可以方便地查看或交互。 首先,我们...

    delphi半透明窗体

    在Delphi编程环境中,创建半透明窗体是一个常见的需求,特别是在设计美观的用户界面时。半透明效果可以为应用程序带来现代感和优雅感,而无需依赖第三方控件。本项目提供的源码展示了如何在Delphi中实现这一功能。 ...

    实现java控件在窗体中自由移动

    实现控件在窗体内自由移动 控件不能移出窗体 窗体大小被设置成屏幕分辨率的大小 当控件Y坐标为0并且鼠标移出控件时,控件向上移动隐藏自身 鼠标移动到控件附近的时候,控件弹出 点击右键透明度增加,左键透明度降低...

    实现窗体的半透明效果的C++源代码

    在C++编程中,创建具有半透明效果的窗体是一项高级技术,主要涉及到Windows API的使用,特别是GDI+库中的函数。半透明效果可以使窗口的部分或全部具有不同程度的透明度,提供更丰富的用户界面体验。本文将深入探讨...

    vb6.0实现透明窗体

    在这个事件中,你可以使用`Graphics`对象的`DrawImage`方法来绘制窗体上的图像,同时跳过需要透明的部分。这通常涉及到对每个像素进行操作,检查其是否应该透明。 3. **使用API函数**:VB6中可以调用Windows API...

    C# Winform在MDI中打开一个子窗体关闭上一个子窗体

    本文将深入探讨如何在MDI环境中控制子窗体的显示与管理,特别是如何实现“在打开新子窗体时自动关闭当前存在的子窗体”的功能。 ### MDI基础概念 MDI架构的核心是`MDIForm`,即作为所有子窗体容器的主窗体。当一个...

    透明窗体之异型窗体、嵌入桌面内、半透明.rar

    - **testTranslucentBackgroundDesktop**:这个名字暗示了这个示例可能涵盖了将窗体嵌入到桌面内并保持半透明效果的技术,结合前面的两个文件,可能是实现全部功能的一个综合示例。 作者朱建强的作品标签表明他可能...

    C#仿迅雷资讯半透明窗体

    在C#编程中,创建一个仿迅雷资讯的半透明窗体是一项有趣且实用的技术挑战。这个项目旨在实现一个窗口,其背景具有类似迅雷资讯的半透明效果,同时保持窗口上的控件清晰可见。半透明窗体可以提供更美观的用户界面,使...

    Swing 实现透明窗体

    在Swing中实现透明窗体是一个常见的需求,特别是在设计现代、美观的应用程序时,透明效果往往可以增加视觉吸引力。 标题中的“Swing实现透明窗体”主要涉及以下几个知识点: 1. **AWT和Swing的区别**:在Java中,...

    java编写的窗体抖动

    在Java编程环境中,窗体抖动功能是一种常见的用户交互设计,常见于即时通讯软件如QQ,用于引起用户注意。这个功能通常通过模拟窗口在屏幕上快速移动一小段距离来实现。以下将详细介绍如何使用Java实现这一功能。 ...

    vb半透明窗体,源码

    在本文中,我们将深入探讨如何在VB中实现半透明窗体,并分享一个已调试通过的源码示例。 首先,理解VB窗体的透明性是如何工作的至关重要。在VB中,透明度是通过设置窗体的`Opacity`属性来控制的。`Opacity`属性的值...

    C#-winform窗体只允许显示一个子窗体

    在实现只显示一个子窗体的功能时,可能包含用于切换或关闭当前子窗体并打开新子窗体的函数,如`ChangeWindow()`。 5. **"阅读文档.txt"的提示**: 这个文件很可能是提供详细步骤或示例代码的文本文档,包含如何...

    半透明渐显窗体

    在本文中,我们将深入探讨如何在C# WinForms应用程序中实现半透明渐显窗体的效果。这个技术可以为用户界面增添动态感,提高用户体验。首先,让我们了解什么是半透明窗体以及如何创建它。 半透明窗体是指窗体背景...

    vb实现窗体半透明(源码)

    在VB(Visual Basic)编程中,实现窗体的半透明效果是一种常见的视觉设计技术,它可以使用户界面看起来更加现代和吸引人。半透明效果通过调整窗体的Alpha通道来实现,Alpha通道控制颜色的透明度,值从0(完全透明)...

Global site tag (gtag.js) - Google Analytics