微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 打开另一个窗口时将JFrame变为黑色

当焦点在另一个窗口时,我不想让我的主JFrame变暗.
这是来自足球经理2012游戏的一个例子.首先选择主窗口,它看起来应该是,然后当它加载时,它变得更暗和不可选.我不想在我自己的应用程序上有这个效果,但我不确定如何,甚至不确定谷歌的什么?

我猜它出现了一个JWindow,JFram在后台变得无法选择.我正计划在我的应用程序的帮助窗口中使用它,现在就是JWindow.

最佳答案
Andrew Thompson有正确的想法,只有使用框架的JRootPane的玻璃窗格功能才更容易.这是一些有效的代码:在你的框架类中,调用

getRootPane().setGlasspane(new JComponent() {
    public void paintComponent(Graphics g) {
        g.setColor(new Color(0,100));
        g.fillRect(0,getWidth(),getHeight());
        super.paintComponent(g);
    }
});

然后,要显示“幕布”,请调用

getRootPane().getGlasspane().setVisible(true);

在上面的代码中,将Alpha透明度值更改为100,以便找到合适的暗度.

..wan’t the JFrame to go back to normal after the new window is closed. I tried setVisible(false) but it didn’t work.

它适用于此示例.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class ShadowedFrame extends JFrame {

    ShadowedFrame() {
        super("Shadowed Frame");
        getRootPane().setGlasspane(new JComponent() {
            public void paintComponent(Graphics g) {
                g.setColor(new Color(0,100));
                g.fillRect(0,getHeight());
                super.paintComponent(g);
            }
        });
        JButton popDialog = new JButton("Block Frame");
        popDialog.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                getRootPane().getGlasspane().setVisible(true);
                JOptionPane.showMessageDialog(ShadowedFrame.this,"Shady!");
                getRootPane().getGlasspane().setVisible(false);
            }
        });
        setContentPane(popDialog);
        pack();
        setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        setLocationByPlatform(true);
        setSize(350,180);
    }

    public static void main(String[] args) {
        SwingUtilities.invokelater(new Runnable() {
            public void run() {
                new ShadowedFrame().setVisible(true);
            }
        });
    }
}

原文地址:https://www.jb51.cc/java/437645.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐