timestamp
Mitglied Käsekuchen
Hallo Forum
vielleicht liegt es an der Uhrzeit oder einfach daran, dass ich noch nicht so viel Java Erfahrung gesammelt habe, aber ich versuche hier jetzt schon seit Ewigkeiten ein Bild zeichnen zu lassen (und dass zu aktualisieren). Nur bekomme ich überhaupt gar nichts angezeigt. Auch die Kontrollausgabe wird nicht getätigt. Ich erhalte auch keine Fehlermeldungen. Ich benutze eclipse unter Win7.
Die Klasse Game startet einen Thread, der im JFrame ein Bild malen soll. Dazu ruft der Thread die Methode der Klasse Map auf, wovon ein Objekt in Game angelegt wurde.
Der Code:
Ich habe (so denke ich) unwichtigen Code herausgelassen. Deswegen scheinen einige Variablen/Funktionen jetzt nicht vorzukommen. Wenn die trotzdem benötigt werden bitte nachfragen
vielleicht liegt es an der Uhrzeit oder einfach daran, dass ich noch nicht so viel Java Erfahrung gesammelt habe, aber ich versuche hier jetzt schon seit Ewigkeiten ein Bild zeichnen zu lassen (und dass zu aktualisieren). Nur bekomme ich überhaupt gar nichts angezeigt. Auch die Kontrollausgabe wird nicht getätigt. Ich erhalte auch keine Fehlermeldungen. Ich benutze eclipse unter Win7.
Die Klasse Game startet einen Thread, der im JFrame ein Bild malen soll. Dazu ruft der Thread die Methode der Klasse Map auf, wovon ein Objekt in Game angelegt wurde.
Der Code:
Java:
public class Map extends JComponent {
Image img;
Map(String map, int startX, int startY){
this.img = Toolkit.getDefaultToolkit().getImage( "./gamedata/images/tiles/tile01.png" );
}
public void displayMapTiles(){
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
System.out.println("AUFGERUFEN");
g.drawImage(img, 50, 50, Game.window);
}
}
public class Game extends JFrame implements GameConstants {
static JFrame window;
static Map map;
public static void main(String[] args){
Game game = new Game(); //starting a new game
/* creating the window*/
window = new JFrame();
window.setTitle(STR_GAMENAME+" "+STR_GAMEVERSION);
window.setSize(INT_GAMEWIDTH, INT_GAMEHEIGHT);
window.setLayout(null);
window.setResizable(false);
window.setLocation(100,100);
window.setBackground(new Color(100, 100, 100));
window.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
window.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent evt){
menu.quit();
}
});
window.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent evt){
Game.handleKeyDownEvent(evt.getKeyCode());
}
});
map = new Map("castle", 50, 50);
window.add(map);
window.setVisible(true);
menu = new Menu(); //starting the menufunctions
//map = new Map("castle", 0, 0);
GameThread gt = new GameThread();
Thread t = new Thread(gt);
t.start();
}
}
public class GameThread implements Runnable{
public void run(){
//Draw
while(true){
try{
Game.map.displayMapTiles();
Thread.sleep(40);
}
catch(Exception e){
String content = "Error: "+e.getMessage();
String title = "Error";
Object[] options = {"Continue", "Quit program"};
if( Game.MessageBox(Game.window, content, title, options, 0, JOptionPane.ERROR_MESSAGE) == 1)
System.exit(0);
}
}
}
}
Ich habe (so denke ich) unwichtigen Code herausgelassen. Deswegen scheinen einige Variablen/Funktionen jetzt nicht vorzukommen. Wenn die trotzdem benötigt werden bitte nachfragen
