2014-11-03 6 views
1
import java.awt.*; 
import javax.swing.*; 
import javax.swing.plaf.LayerUI; 
public class MyJLayer extends JFrame { 
    public static void main(String[] args) { 
     MyJLayer jlayer = new MyJLayer(); 
     jlayer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel panel = new JPanel(); 
     JButton button = new JButton("Debug Only."); 
     panel.add(button); 

     UI ui = new UI(); 
     JLayer<JPanel> jLayer = new JLayer<JPanel>(panel, ui); 

     jlayer.add(jLayer); 
     jlayer.setSize(100, 100); 
     jlayer.setVisible(true); 
    } 
} 
class UI extends LayerUI<JPanel>{ 
    public void paint(Graphics g, JPanel c){ 
     super.paint(g, c); 
     Graphics2D g2d = (Graphics2D)g.create(); 
     g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .8f)); 
     g2d.setColor(Color.BLUE); 
     g2d.fillRect(0, 0, c.getWidth(), c.getHeight()); 
     g2d.dispose(); 
    } 
} 

패널에 파란색 색상이 전혀 표시되지 않지만 그 이유는 모르겠습니다. 누구든지 나를 도울 수 있습니까? 방금 ​​찾지 못했습니다. http://docs.oracle.com/javase/tutorial/uiswing/misc/jlayer.htmlJLayer에 대한 오라클의 튜토리얼을 따르지만이 코드에서는 작동하지 않습니다.

+0

쇼 스택 트레이스 또는 예외를 ...

public void paint(Graphics g, JComponent c) 

와 미래에, 컴파일러는 당신을 위해 문제를 찾을 수 있도록 @Override 주석을 추가 :?에 서명을 변경? – Divya

+0

코드가 호출되기도합니까? JPanel C의 크기는 얼마입니까? 덕분에 – keuleJ

답변

4

paint 메서드는 수퍼 클래스 메서드를 재정의하지 않으므로 호출되지 않습니다. ...

+0

! 찾았어요! 예, 페인트 (Graphics g, JPanel c) -> 페인트 (Graphics g, JComponent c)를 변경 한 다음 완료합니다. –