【问题标题】:Set the visibility of components within a transparent JFrame在透明的 JFrame 中设置组件的可见性
【发布时间】:2012-10-08 21:09:48
【问题描述】:

问题:单击按钮时隐藏已添加到透明 JFrame 的 JPanel。

问题:JPanel 未正确隐藏,但仍以较深的颜色显示。不启用 alpha 通道,它会隐藏起来。

感谢您的帮助。

示例代码:

public class TestJFrame extends JFrame {

private JButton mSwitchButton = new JButton("Switch");
private JPanel mPanel = new JPanel();

public static void main(String[] args) {
    new TestJFrame();
}

public TestJFrame() {
    setSize(400, 300);      
    getContentPane().setLayout(new BorderLayout());
    this.setBackground(new Color(50, 50, 50, 50));      
    mPanel.setBackground(Color.RED);
    getContentPane().add(mPanel, BorderLayout.CENTER);
    getContentPane().add(mSwitchButton, BorderLayout.SOUTH);        
    mSwitchButton.addMouseListener( new MouseListener() {           
                    ...

        @Override
        public void mouseClicked(MouseEvent arg0) {
            mPanel.setVisible(false);
        }
                    ...
    });     
    pack();
    setVisible(true);
}

【问题讨论】:

    标签: java swing jframe transparency alpha-transparency


    【解决方案1】:

    较深的颜色与 JFrame 有关——JFrame 本身就是没有被正确隐藏的部分。但是,当您设置时,您的 JPanel 被很好地隐藏了

    this.setBackground(new Color(50, 50, 50, 50));
    

    然后移除JPanel,剩下的就是50 alpha 值。将其设置为:

    this.setBackground(new Color(50, 50, 50, 0));
    

    当我在我的机器上测试它时纠正了这个问题。

    【讨论】:

    • 谢谢。我想我需要阅读背景透明度的继承如何影响其子组件的可见性。我本以为明确设置可见性会起作用。通过按照您所说的更改 alpha 通道来完成这项工作。干杯。
    猜你喜欢
    • 2013-10-31
    • 2013-04-08
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 2023-03-10
    相关资源
    最近更新 更多