Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用透明模糊背景的JFrame_Java_Swing_Background_Jframe - Fatal编程技术网

Java 如何使用透明模糊背景的JFrame

Java 如何使用透明模糊背景的JFrame,java,swing,background,jframe,Java,Swing,Background,Jframe,我只是想知道是否有办法使JFrame的背景模糊。有点像iOS效应 在Java中可能吗? 我在Windows和Mac上需要它。我已经断断续续地做了一段时间,但从来没有得到任何令人满意的结果。为什么?因为为了让它工作,你需要使窗户透明(实际上是半透明的),但是当使用原生的外观装饰时,窗户必须没有装饰才能工作 注:这利用了原因当我开始做这类事情时,JNA还处于婴儿期 以及dwmblurbhind类 import com.jniwrapper.Int; import com.jniwrapper.Pa

我只是想知道是否有办法使
JFrame
的背景模糊。有点像iOS效应

在Java中可能吗?
我在Windows和Mac上需要它。

我已经断断续续地做了一段时间,但从来没有得到任何令人满意的结果。为什么?因为为了让它工作,你需要使窗户透明(实际上是半透明的),但是当使用原生的外观装饰时,窗户必须没有装饰才能工作

注:这利用了原因当我开始做这类事情时,JNA还处于婴儿期

以及
dwmblurbhind

import com.jniwrapper.Int;
import com.jniwrapper.Parameter;
import com.jniwrapper.Pointer;
import com.jniwrapper.Structure;
import com.jniwrapper.UInt32;
import windows.WinDef;

public class DWMBlurBehind extends Structure {

    public static final int DWM_BB_ENABLED = 0x1;
    public static final int DWM_BB_BLURREGION = 0x2;
    public static final int DWM_BB_TRANSITIONONMAXIMIZED = 0x4;

    private UInt32 dwFlags;
    private Int enabled;
    private Pointer.Void region;
    private Int transitionOnMazimized;

    public DWMBlurBehind() {

        dwFlags = new UInt32(DWM_BB_ENABLED);
        enabled = new Int(WinDef.TRUE);
        transitionOnMazimized = new Int(WinDef.TRUE);
        region = new Pointer.Void();
        init(new Parameter[]
        {
            dwFlags,
            enabled,
            region,
            transitionOnMazimized
        });
    }

    public long getFlags() {
        return dwFlags.getValue();
    }

}

现在,说到这里,如果你不关心使用本机外观的UI,你可以创建一个装饰框架(使用外观装饰),作为@gtgaxiola的可能副本。在我发布问题之前,我已经看过了那篇文章。如果你仔细阅读我的问题,我想添加模糊效果,而不在背景中添加任何图像。但你提到的帖子是为了修复特定组件并使背景图像模糊。一般来说,不。你“可能”可以使用JNI/JNA来完成,但随后你会遇到一系列新问题,因为核心api是为处理这些问题而设计的……对于windows,你必须查看和api,不能说你需要为MacOS看什么
import com.jniwrapper.Int;
import com.jniwrapper.Parameter;
import com.jniwrapper.Pointer;
import com.jniwrapper.Structure;
import com.jniwrapper.UInt32;
import windows.WinDef;

public class DWMBlurBehind extends Structure {

    public static final int DWM_BB_ENABLED = 0x1;
    public static final int DWM_BB_BLURREGION = 0x2;
    public static final int DWM_BB_TRANSITIONONMAXIMIZED = 0x4;

    private UInt32 dwFlags;
    private Int enabled;
    private Pointer.Void region;
    private Int transitionOnMazimized;

    public DWMBlurBehind() {

        dwFlags = new UInt32(DWM_BB_ENABLED);
        enabled = new Int(WinDef.TRUE);
        transitionOnMazimized = new Int(WinDef.TRUE);
        region = new Pointer.Void();
        init(new Parameter[]
        {
            dwFlags,
            enabled,
            region,
            transitionOnMazimized
        });
    }

    public long getFlags() {
        return dwFlags.getValue();
    }

}