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
}
}
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. –
* "Était déjà comme ça." * Montre un MCVE du code *** qui échoue *** plutôt que d'afficher quelque chose comme le code utilisé. –
@AndrewThompson Ce code échoue – Colourfit