gpt4 book ai didi

java - 结合 Aero Glass 效果和 SWT

转载 作者:可可西里 更新时间:2023-11-01 13:27:14 25 4
gpt4 key购买 nike

作为一个宠物项目,我一直在研究将 Aero Glass 效果集成到我的 SWT 应用程序中的概念。 Łukasz Milewski has an excellent blog post解释这是如何实现的,这几乎可以归结为:

final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FormLayout());
final MARGINS margins = new MARGINS();
margins.cyTopHeight = -1;

final Composite c = new Composite(shell, SWT.NORMAL);
c.setBackground(new Color(shell.getDisplay(), new RGB(0, 0, 0)));
final FormData fd = new FormData();
fd.top = new FormAttachment(0, 0);
fd.left = new FormAttachment(0, 0);
fd.right = new FormAttachment(100, 0);
fd.bottom = new FormAttachment(100, 0);
c.setLayoutData(fd);

OS.DwmExtendFrameIntoClientArea(shell.handle, margins);

shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}

在您想要添加控件之前,这工作得很好。这导致黑色保持透明:

Transparent shell with control

A follow-up post也演示了如何执行此操作,但需要修改 SWT 库。 (至少,我相信是这样,因为私有(private) SWT 函数被 @Override 覆盖了。)

如何避免控件变得透明?更妙的是:我如何从透明度中获益(例如,将图像放在其上 like so ),但又要以合理的方式使用它?

最佳答案

覆盖的方法是“包私有(private)的”。为了在没有编译时错误的情况下覆盖它们,您必须将您的类放入与父类(super class)相同的包中,即 org.eclipse.swtorg.eclipse.swt.widgets包。您引用的博客实际上在最后提到了这个实现细节,所以我不知道,这真的回答了您的问题。

关于java - 结合 Aero Glass 效果和 SWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3627683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com