java - Swing - 创建有色透明前景,同时使背景项目不可点击

标签 java swing

所以我正在使用 Swing 创建一个 Java 应用程序用户界面。基本上,每当一个过程完成时,我都希望有一个具有一定色调的透明叠加层,并且在前台会显示一个正在加载的 gif。背景项目将不可单击,以防止立即加载/运行任何其他进程。我真正需要帮助的唯一部分是制作有色背景并使背景中的项目不可点击。理想情况下,我希望将该类用作 Util 类,以便在其他需要启动加载屏幕的情况下使用。到目前为止,这是我的代码:

package com.cervinakuy.game;

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JTextField;

public class Overlay extends JFrame {

    private static final long serialVersionUID = 1L;

    public Overlay() {

        setUndecorated(true);
        setBackground(new Color(1.0f,1.0f,1.0f,0.5f));
        setAlwaysOnTop(true);
        getRootPane().putClientProperty("apple.awt.draggableWindowBackground", false);

        setVisible(true);
        pack();

    }

}

最佳答案

您可以做您正在做的事情,除非您使用模态 JDialog 而不是 JFrame。模式对话框会阻止事件传递到父 JFrame,直至对话框关闭。

另一种方法是使用玻璃 Pane 。玻璃板可以覆盖框架。然后,您可以拦截鼠标/按键事件以防止进一步处理,直到玻璃板被移除。

查看Disabled Glass Pane有关此方法的示例。

关于java - Swing - 创建有色透明前景,同时使背景项目不可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864425/

相关文章:

java - 访问实现接口(interface)的函数的 getter 和 setter

java - Java 中的类销毁

java - 错误 : Gradle: execution failed for task ':app:preDexDebug'

java - 如何添加一个计时器对象以在一个线程上每 X 秒执行一次操作,在另一个线程上每 Y 秒执行一次操作?

java - 如何将数据从类发送到 Android 中的 Activity

java - 如何使循环队列完全线程安全

Java:即使我在后台运行游戏时如何保持我的应用程序正常运行

Java文本组件计算自己的首选大小

Java GUI 101 - 更改 JPanel 的标题

java - 如何替换文本区域上的appendText