Comment ajouter une classe qui étend la classe Composite à JFrame?
Pour ma mission, je me suis donné à ce morceau de code:
//This class/method uses a global variable that MUST be set before calling/using
//note: You can not call the paint routine directly, it is called when frame/window is shown
//look up the repaint() routine in the book
//Review Listings 8.5 and 8.6
//
public static class MyPanel extends JPanel {
public void paintComponent (Graphics g) {
int xpos,ypos;
super.paintComponent(g);
//set the xpos and ypos before you display the image
xpos = 10; //you pick the position
ypos = 10; //you pick the position
if (theimage != null) {
g.drawImage(theimage,xpos,ypos,this);
//note: theimage global variable must be set BEFORE paint is called
}
}
}
Mon professeur dit aussi: Vous aurez aussi besoin de chercher comment créer ET ajouter un JPanel
à un JFrame
. Si vous pouvez créer ET ajouter un JPanel
, puis tout ce que vous devez faire est de remplacer ' MyPanel
"pour le nom de la classe' JPanel
" et ce code permet d'afficher une image sur le châssis de la fenêtre.
Que veut-il dire par "puis tout ce que vous devez faire est de remplacer 'MyPanel" pour le nom de la classe 'Composite', et ce code permet d'afficher une image sur le châssis de la fenêtre"? Je suis confus d'où je suis censé remplacer MyPanel
. Voici mon code:
public static class MyPanel extends JPanel {
public void paintComponent (Graphics g) {
int xpos,ypos;
super.paintComponent(g);
JPanel panel= new JPanel();
JFrame frame= new JFrame();
frame.setSize(500,400);
frame.add(panel);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//set the xpos and ypos before you display the image
xpos = 600; //you pick the position
ypos = 600; //you pick the position
if (theimage != null) {
g.drawImage(theimage,xpos,ypos,this);
//note: theimage global variable must be set BEFORE paint is called
}
}
}
Vous devez avoir précédentes listes de code à l'aide de
paintComponent est protégé, non public
Cette exemple peut-être d'intérêt pour vous 🙂
La création d'une nouvelle instance d'un cadre ou d'un panneau est pas quelque chose qui devrait être fait à l'intérieur, ou appelé à partir, le
Ni de la publication des codes de la compilation, depuis
JPanel
que le conteneur primaire. Votre professeur vous propose de prendre ces inscription (8.5 & 8.6) et d'essayer de les faire utiliser MyPanel
au lieupaintComponent est protégé, non public
Cette exemple peut-être d'intérêt pour vous 🙂
La création d'une nouvelle instance d'un cadre ou d'un panneau est pas quelque chose qui devrait être fait à l'intérieur, ou appelé à partir, le
paintComponent()
méthode!Ni de la publication des codes de la compilation, depuis
theimage
n'est pas déclaré.OriginalL'auteur stepup.stepout | 2012-10-16
Vous devez vous connecter pour publier un commentaire.
Si je comprends bien ce que vous demandez à droite... Dans votre mission, vous êtes invités à prolonger Composite pour vos propres besoins. Notez comment vous souhaitez ajouter un Composite si elle n'était pas étendu:
Cela ajoute un Composite à la JFrame, packs et définit pour être visible. Depuis votre myFrame classe étend Composite, vous devriez être en mesure de faire quelque chose de très similaire, par la création d'une nouvelle instance de votre panneau de la classe et de l'ajouter à votre JFrame.
Vous ne voulez pas faire cette partie en
paintComponent()
, commepaintComponent()
peut potentiellement être appelée plusieurs fois. Vérifier ici pour voir ce quepaintComponent()
n'.Pour des questions comme cela, je ne vous recommande juste de mettre à jour votre question avec le nouveau code, que les commentaires sont un mauvais format pour l'affichage de ce nouveau code. De toute façon, votre professeur code initial semble bien pour moi, assurez-vous simplement que vous n'êtes pas essayez de définir votre image au sein de votre panneau personnalisé de classe.
OriginalL'auteur Anthony Neace
@Hyper Anthony
De sorte qu'il serait quelque chose du genre?:
OriginalL'auteur stepup.stepout