2016-07-17 1 views
1

나는 내 Frame에 추가하고 지속적으로 업데이트하는 사용자 정의 JPanel 클래스가 있습니다. 이 클래스는 무시 된 paintComponentJButton을가집니다. paintComponent에 그려진 그래픽 위에 JButton을 어떻게 그리려고합니까? 나는이 paintCompoment을 루프를 통해 끊임없이 업데이트한다. repaint()이 그 것이다. 그러나 나는 JButton을 변경하지 않는다. 내 사용자 지정 JPanel 클래스는 내 Main 클래스의 하위 클래스입니다.Java 그래픽의 JButton infront를 그리는 방법?

내 패널 AndrewThompsons에게 지혜로운 말에 따라 클래스

public class interTower extends JPanel implements ActionListener{ 
    public interTower(){ 
     setVisible(true); 
     setPreferredSize(new Dimension(SCREENWIDTH, SCREENHEIGHT)); 

     JButton interTower_back = new JButton("Back"); 
     interTower_back.setActionCommand("interTower_back"); 
     interTower_back.addActionListener(this); 
     add(interTower_back); 
    } 

    @Override 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Graphics2D g2d = (Graphics2D) g; 
     drawMaster(g2d); 
     g2d.dispose(); 

    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     // TODO Auto-generated method stub 

    } 
} 
+2

1) super.paintComponent (g);를 메소드의 첫 번째 라인으로 이동하십시오. 2)'g.dispose();'생성하지 않은'Graphics' 객체를 처리하지 마십시오 . 3)'g2d'는 같은 그래픽 객체입니다. 그것도 처분하지 마십시오. 3) 더 빨리 도움을 받으려면 [MCVE] 또는 [짧은, 자기 포함, 올바른 예] (http://www.sscce.org/)를 게시하십시오. 4) 일반적인 Java 명명법 (예 :'EachWordUpperCaseClass','firstWordLowerCaseMethod()','firstWordLowerCaseAttribute'가'UPPER_CASE_CONSTANT'가 아닌 경우)을 배우고 일관되게 사용하십시오. –

+1

* "이미 그랬어."* 사용중인 코드와 같이 '무언가'를 게시하는 대신 실제로 실패한 *** 코드 인 MCVE를 보여줍니다. –

+0

@AndrewThompson이 코드 조각은 실패했습니다 – Colourfit

답변

1

, 내 문제를 해결했습니다! 그래픽 객체를 삭제하면 버튼 렌더링이 중단 된 것 같습니다. 두 개체의 처분 호출을 제거하면 내 문제가 해결 된 것 같습니다. AndrewThompson에게 감사드립니다.

관련 문제