2012-10-08 57 views
2

問題:隱藏已單擊按鈕時添加到透明JFrame的JPanel。設置透明JFrame中組件的可見性

問題: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); 
} 

回答

3

較深的顏色與JFrame中做 - JFrame中本身就是沒有被正確隱藏。您的JPanel被隱藏的很好,但是,當你設置

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

然後取出的JPanel,你留下的是50 alpha值。設置爲:

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

糾正這一點,當我在我的機器上測試它。

+1

謝謝你。我想我需要了解後臺透明度的繼承如何影響其子組件可見性。我會認爲明確設置可見性會起作用。通過改變alpha通道,就像你說的那樣完成工作。乾杯。 – Jon