Java 如何实时更改JFrame不透明度

Java 如何实时更改JFrame不透明度,java,swing,jframe,awtutilities,Java,Swing,Jframe,Awtutilities,有没有什么好方法可以实时更改JFrame不透明度。现在我需要重新启动窗口以获得不透明度 if (Variables.LoggerOpacity){ if (AWTUtilities.isTranslucencySupported(AWTUtilities.Translucency.TRANSLUCENT)) { AWTUtilities.setWindowOpaque(Frame, true); AWTUti

有没有什么好方法可以实时更改JFrame不透明度。现在我需要重新启动窗口以获得不透明度

        if (Variables.LoggerOpacity){
        if (AWTUtilities.isTranslucencySupported(AWTUtilities.Translucency.TRANSLUCENT)) {
              AWTUtilities.setWindowOpaque(Frame, true);
              AWTUtilities.setWindowOpacity(Frame, 0.60f);
        }
    }
当我使用

AWTUtilities.setWindowOpacity(Frame, 0.60f);
在按钮JCheckBox上,我不会更改不透明度。
问:如何实时更改不透明度?

即使您已将JFrame设置为静态,如果不透明度方法在同一类中,您也应该能够引用它,如果不在同一类中,则创建一个getter方法来引用JFrame并将其传递给函数。下面是一个执行的示例程序,不透明度工作正常:

public class JFrameOpacityExample extends JFrame {

private static JFrame myFrame;
private static boolean loggerOpacity;
private static JButton button;

public static void main(String[] args) {

    myFrame = new JFrame("Test Frame");
    myFrame.setSize(400, 400);
    myFrame.setVisible(true);

    JPanel panel = new JPanel();

    button = new JButton("Press me");
    button.setBounds(100, 100, 50, 50);
    button.setVisible(true);
    panel.add(button);
    myFrame.add(panel);

    loggerOpacity = true;

    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            Object src = evt.getSource();
            if (src == button && loggerOpacity) {
                AWTUtilities.setWindowOpacity(myFrame, 0.40f);
            }
        }
    });
  }
}

将以下命令添加到框架的构造函数中。本例中帧的名称为
MyFrame

    jCheckBox1.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent ae) {
            AWTUtilities.setWindowOpacity(MyFrame.this, 0.2f);
        }
    });

不,那是个好主意。我会试试的!然后我遇到的问题是不透明度代码:AWTUtilities.setWindowOpacity(Frame,0.60f);你需要给这个框架。问题是我找不到办法把框架放在那里。我将Frame设置为静态并使用ClassName.Frame,但这不起作用。有什么办法可以解决这个问题吗?请学习java命名约定并坚持下去。您没有显示的代码有问题,现在我有了这个:“code”变量。LoggerOpacity=true;重新绘制();'代码“但这不起作用?我在制作框架的类中使用了不透明度方法。是否重新绘制();刷新整个框架?