2016-07-17 3 views
1

J'ai une classe JPanel personnalisée que j'ajoute à mon Frame et je le mets constamment à jour. Cette classe a un paintComponent par-dessus et un JButton. Comment puis-je dessiner le JButton sur mes graphiques dessinés dans mon paintComponent? Je met constamment à jour ce paintCompoment à travers une boucle qui est repaint(), mais je ne change pas le JButton. Ma classe personnalisée est une sous-classe de ma classe Main.Comment dessiner JButton en face de graphiques java?

My Panel Classe

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) Déplacez 'super.paintComponent (g);' pour être la première ligne de la méthode. 2) 'g.dispose();' ne pas disposer d'un objet 'Graphics' que vous n'avez pas créé . 3) 'g2d' est le même objet graphique. Ne le jetez pas non plus. 3) Pour une meilleure aide plus tôt, postez un [MCVE] ou [Short, Self Contained, Example correct] (http://www.sscce.org/). 4) Apprendre la nomenclature Java courante (conventions de nommage - par exemple 'EachWordUpperCaseClass',' firstWordLowerCaseMethod() ',' firstWordLowerCaseAttribute' sauf s'il s'agit d'un 'UPPER_CASE_CONSTANT') et l'utiliser de façon cohérente. –

+1

* "Était déjà comme ça." * Montre un MCVE du code *** qui échoue *** plutôt que d'afficher quelque chose comme le code utilisé. –

+0

@AndrewThompson Ce code échoue – Colourfit

Répondre

1

Par AndrewThompsons suivant sages paroles, j'ai fixé mon problème! La disposition de l'objet graphique semble arrêter le rendu du bouton. Retrait de l'appel de disposer des deux de l'objet semble résolu mon problème. Merci AndrewThompson.