L'appel de la peinture() la méthode d'une autre classe?
Je suis en train d'appeler le paint()
méthode d'une autre classe, mais il ne fonctionne tout simplement pas.
Voici le code:
Main.java
:
public class Main extends JFrame {
private static final long serialVersionUID = 1L;
private int WIDTH = 600;
private int HEIGHT = 400;
private String NAME = "Dark Ages";
private String VERSION = "0.0.1 Pre-Alpha";
static boolean running = false;
private Image dbImage;
private Graphics dbg;
public Main() {
//Initialize window
JFrame frame = new JFrame();
frame.setTitle(NAME + " - " + VERSION);
frame.setSize(WIDTH, HEIGHT);
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
//Running
running = true;
}
public void paint(Graphics g) {
dbImage = createImage(getWidth(), getHeight());
dbg = dbImage.getGraphics();
paintComponent(dbg);
g.drawImage(dbImage, 0, 0, this);
}
public void paintComponent(Graphics g) {
//Draw Images
repaint();
}
public static void main(String args[]) {
new Main();
Player player = new Player();
}
}
Player.java
:
public class Player {
public void paint(Graphics g) {
g.drawRect(100, 100, 100, 100);
}
}
Vous devez vous connecter pour publier un commentaire.
En bref, vous ne pas. Et en fait, vous ne devriez pas appeler directement à partir de la même classe. Au lieu de cela, vous devriez changer l'état de la classe (modifier ses champs), puis d'appeler
repaint()
sur elle, qui proposera à la JVM que le composant en question doit être peint.D'autres questions et suggestions:
JFrame
,JDialog
ou d'autres haut-niveau de la fenêtre. Ces fenêtres ont trop de rôles à jouer derrière les scènes que vous n'avez pas vraiment envie de jouer avec la façon dont ils rendent eux-mêmes ou leurs enfants (sauf si vous savez vraiment ce que vous faites et ont un besoin défini).paintComponent(...)
de remplacement des méthodes deJPanel
ou d'autresJComponent
s.paintComponent(...)
remplacer, n'oubliez pas d'appeler lasuper
s'méthode:super.paintComponent(g);
. Cela permettra de Swing pour faire le ménage de dessin, tels que l'effacement des vieux pas à jour ou effacées, les images, avant de vous faire votre dessin.Player
classe étend aucun composant Swing et est ajouté à pas de haut niveau de la fenêtre, de sorte que son code ne fait rien d'utile. Encore une fois, lisez les tutoriels.repaint()
de l'intérieurpaint(...)
oupaintComponent(...)
.Please post modified code if possible.
: merci de ne pas nous demander de créer un code pour vous que c'est votre travail. S'il vous plaît comprendre que le plus de code que vous créez, le mieux un codeur vous serez, et de ce fait, la plupart d'entre nous ne se sentent pas que nous devrions nous vous empêchent de la possibilité de créer votre propre code.Utile Java Tutoriels: