2012-10-08 2 views
2

질문 : 버튼을 클릭 할 때 투명 JFrame에 추가 된 JPanel을 숨기려고합니다.투명 JFrame에서 구성 요소의 가시성 설정

문제점 : JPanel이 제대로 숨겨져 있지 않지만 여전히 어두운 색으로 표시됩니다. 알파 채널을 사용하지 않으면 ok가 표시되지 않습니다.

도움 주셔서 감사합니다.

예제 코드 :

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) 알파 값입니다. 설정 :

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

내 컴퓨터에서 테스트했을 때이 오류가 수정되었습니다.

+1

감사합니다. 배경 투명도의 상속이 어떻게 하위 구성 요소의 가시성에 영향을 미치는지 읽어야한다고 생각합니다. 가시성을 명시 적으로 설정하면 효과가 있었을 것입니다. 알파 채널을 변경함으로써 당신이 말하는 것처럼 일합니다. 건배. – Jon

관련 문제