我想编写一个小应用程序,但我希望整个窗口都是玻璃的,并且在其上方放置按钮和标签。在Java中是否可以实现这一点?
我想编写一个小应用程序,但我希望整个窗口都是玻璃的,并且在其上方放置按钮和标签。在Java中是否可以实现这一点?
DwmExtendFrameIntoClientArea(int windowHandle, MARGINS margins);
这个本地API可以在Windows Vista和Windows 7的DWMAPI.dll本地库中找到,并且在MSDN上有文档记录。
关于如何调用此函数,网络上有很多文档。例如,这里有一篇关于C#中如何实现这一点的文章。那应该可以帮助你入门。
HWND hwnd
成为您想要玻璃化的窗口的句柄,让COLORREF color
成为一种颜色(越不寻常越好):// 1.
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetWindowPos(hwnd, NULL, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
// 2.
MARGINS margins = {-1, -1, -1, -1};
DwmExtendFrameIntoClientArea(hwnd, &margins);
// 3.
SetLayeredWindowAttributes(hwnd, color, 0, LWA_COLORKEY);
window.getContentPane().setBackground(color);
其中color
是之前选择的颜色的Java版本。
嗯。我认为所有Java GUI都必须直接或间接地显示在一个窗口
中,这是一个重量级组件。不确定您是否可以使其透明/半透明。
尝试构建一个JFrame并将其背景颜色设置为new Color(255, 255, 255, 20)
,其中20是alpha值。这应该要么使其大部分透明 - 要么就无法工作。