À l'aide de paintComponent() pour tracer un rectangle dans JFrame
Je suis en train de créer un programme qui dessine des formes (rectangle sur l'exemple ci-dessous) à l'aide d'un Composite de paintComponent(), mais je ne peux pas le faire fonctionner et ne peut pas reconnaître ce qui est faux.
Le code est comme suit:
import javax.swing.*;
import java.awt.*;
public class RandomRec{
JFrame frame;
public void go(){
frame = new JFrame();
frame.setSize(500,500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DrawPanel panel = new DrawPanel();
}
public static void main (String[] args){
class DrawPanel extends JPanel{
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.orange);
g.drawRect(20, 20, 100, 60);
}
}
RandomRec test = new RandomRec();
test.go();
}
}
Toute aide serait grandement appréciée.
Merci.
*Mise à JOUR* Problème résolu! Le déplacement de la méthode go() de la méthode main, ajouter un cadre.add(panneau) et le déplacement du cadre.setVisible(true) à la partie inférieure de la méthode go () (plus précisément, le déplacer après le panneau est ajouté à l'image) a réglé le problème. Je vous remercie.
Il n'est pas nécessaire de mettre à jour votre question avec la réponse. Le meilleur moyen d'indiquer "Résolu" est à cocher la case située à côté de la plus utile de répondre. Vous pouvez également voter toute les réponses qui vous ont aidé.
OriginalL'auteur priboyd | 2012-11-15
Vous devez vous connecter pour publier un commentaire.
Votre classe
DrawPanel
est limitée à la portée de votremain
méthode et n'est pas visible par votre constructeur.Vous avez besoin de déplacer
DrawPanel
de votremain
méthode, puis l'ajouter à votreJFrame
:Aussi, mieux vaut appeler
frame.setVisible(true)
fois que tous les composants ont été ajoutés.OriginalL'auteur Reimeus
vous n'êtes jamais fait d'ajouter le panneau de l'image, il n'est jamais visible. vous avez besoin de quelque chose comme
pourquoi êtes-vous la définition de la drawpanel classe à l'intérieur de la méthode main? c'est plutôt étrange.
Je crois que si vous regardez le code source de jframe, ajouter des appels getcontentpane.ajouter de toute façon. Je pense que la méthode add sur jframe est là pour assurer la compatibilité avec awt cadre? (et n'oubliez pas de marquer une réponse comme correcte!)
OriginalL'auteur John Gardner