Aufruf der paint () - Methode aus einer anderen Klasse?
Ich versuche zu nennen, die paint()
Methode aus einer anderen Klasse, aber es funktioniert einfach nicht.
Hier ist der 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);
}
}
InformationsquelleAutor romofan23 | 2013-09-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurz, Sie nicht. Und in der Tat, sollten Sie nicht rufen Sie es direkt aus der gleichen Klasse. Stattdessen sollten Sie ändern den Zustand der Klasse (ändern Ihre Felder), und rufen Sie dann
repaint()
auf, die vorschlagen, um die JVM, dass das Bauteil lackiert werden sollte.Anderen Fragen und Anregungen:
JFrame
,JDialog
oder anderen top-level-Fenster. Diese Fenster haben zu viele Rollen zu spielen, hinter den kulissen, die Sie nicht wirklich wollen, um Durcheinander mit, wie Sie sich selbst darzustellen oder mit Ihren Kindern (es sei denn, Sie wirklich wissen, was Sie tun und haben definitiv brauchen).paintComponent(...)
- Methode überschreiben einerJPanel
oder andereJComponent
s.paintComponent(...)
überschreiben, vergessen Sie nicht, rufen Sie diesuper
's Methode:super.paintComponent(g);
. Dies erlaubt Swing-Hauswirtschaft-Zeichnung, wie das löschen alte veraltete oder gelöschte Bilder, bevor Sie Ihre Zeichnung.Player
Klasse erweitert keine Swing-Komponente ist und Hinzugefügt, keine top-level-Fenster, so wird der zugehörige code nichts zu tun nützlich. Wieder, Lesen Sie die tutorials.repaint()
innerhalbpaint(...)
oderpaintComponent(...)
.Please post modified code if possible.
: bitte Fragen Sie nicht uns zu schaffen-code für Sie als das ist Ihre Aufgabe. Bitte haben Sie Verständnis, dass je mehr code, den Sie erstellen, die bessere Programmierer werden Sie sein, und weil dieses, die meisten von uns nicht das Gefühl, dass wir sollten, betrügen Sie sich der Möglichkeit, erstellen Sie Ihre eigenen code.Nützliche Java-Tutorials:
InformationsquelleAutor Hovercraft Full Of Eels