Java - 从JMenuItem设置JFrame不透明度

时间:2018-01-04 20:31:38

标签: java swing jframe opacity

我正在尝试将JFrame的不透明度从JMenuItem设置为50%。 我最后的尝试是这样的:

op50.addActionListener((ActionEvent y) -> {
        setUndecorated(true);
        AWTUtilities.setWindowOpacity(this, 0.5F);
    });

但无论我在做什么,我都会遇到一个java.awt.IllegalComponentStateException错误消息:框架是可显示的。

我不知道该怎么做,所以请帮助我。

1 个答案:

答案 0 :(得分:0)

如果没有看到完整的代码示例,就无法确定您出错的地方,但这里有一个如何从JMenuItem进行操作的示例。 *请注意,除了Java 1.6之外,这不起作用。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

import com.sun.awt.AWTUtilities;

public class Main
{
    public static void main(String[] args)
    {
        final JFrame frame = new JFrame();

        JMenuBar menuBar = new JMenuBar();

        JMenu menu = new JMenu("Menu");
        menuBar.add(menu);

        JMenuItem menuItem = new JMenuItem("Change Opacity");
        menuItem.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e)
            {
                AWTUtilities.setWindowOpacity(frame, 0.5F);
            }
        });

        menu.add(menuItem);

        frame.setJMenuBar(menuBar);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}