所以我正在使用 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/