摆动 - 创建有色透明前景,同时使背景项无法点击

时间:2016-10-05 02:13:54

标签: java swing

所以我正在使用Swing创建Java应用程序用户界面。基本上,每当一个进程完成时,我想要一个具有某种色调的Overlay,并且在前景中会显示一个加载的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();

    }

}

1 个答案:

答案 0 :(得分:2)

除了使用modal JDialog而不是JFrame之外,您可以执行您正在执行的操作。在关闭对话框之前,模式对话框会阻止事件传递到父JFrame。

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

查看Disabled Glass Pane以获取此方法的示例。