Hallo,
ich probiere / spiele grade ein wenig mit Swing und AWT rum, und habe jetzt ein kleines Problem: Ich habe, nachdem man "x" drückt, einfach ein Bild angezeigt und oben links in der Ecke einen Zähler hochlaufen lassen. Das klappt auch alles, nur werden auf einmal die Zahlen nurnoch als Kästchen dargestellt, wobei sie die korrekte Stellenanzahl haben. Hat jemand eine Idee woran das liegt?
Grüße
vielen Dank im voraus!
ich probiere / spiele grade ein wenig mit Swing und AWT rum, und habe jetzt ein kleines Problem: Ich habe, nachdem man "x" drückt, einfach ein Bild angezeigt und oben links in der Ecke einen Zähler hochlaufen lassen. Das klappt auch alles, nur werden auf einmal die Zahlen nurnoch als Kästchen dargestellt, wobei sie die korrekte Stellenanzahl haben. Hat jemand eine Idee woran das liegt?
Grüße
Java:
package src;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main extends JPanel implements Runnable, KeyListener{
public static final int GAME_WIDTH = 640;
public static final int GAME_HEIGHT = 480;
private static final long serialVersionUID = 1L;
private boolean running = false;
private boolean startGame = false;
private BufferedImage screen;
//*******************
public void setScreen(String filename) {
screen = Images.load(filename);
}
//*******************
public Main() {
this.setPreferredSize( new Dimension(GAME_WIDTH , GAME_HEIGHT) );
this.setFocusable(true);
this.addKeyListener(this);
this.setBackground(Color.WHITE);
}
//*******************
public void paintComponent(Graphics g) {
super.paintComponent(g);
if(!running) {
g.setColor(Color.BLACK);
g.drawString("Zum starten bitte X druecken",GAME_WIDTH/2-100,GAME_HEIGHT/2);
}
}
//*******************
public void start() {
running = true;
new Thread(this).start();
}
//*******************
public void stop() {
running = false;
}
//*******************
public void run() {
BufferedImage image = new BufferedImage(GAME_WIDTH,GAME_HEIGHT,BufferedImage.TYPE_INT_RGB);
int i = 0;
while(running) {
System.out.println("i: "+i);
Graphics g = image.getGraphics();
//Image wird in einer anderen Klasse geladen
g.drawImage(Images.title,GAME_WIDTH/2-Images.title.getWidth()/2,GAME_HEIGHT/2-Images.title.getHeight()/2,null);
g.setColor(Color.WHITE);
g.drawString("i="+i,0,10);
g.dispose();
g=getGraphics();
g.drawImage(image,0,0,null);
g.dispose();
i++;
}
}
//*******************
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_X) {
System.out.println("x got pressed!");
if(!running) {
System.out.println("Thread got started");
this.start();
}
}
if(e.getKeyCode() == KeyEvent.VK_ESCAPE) {
System.out.println("escape got pressed!");
this.stop();
}
}
//*******************
public void keyReleased(KeyEvent e) {
}
//*******************
public void keyTyped(KeyEvent e) {
}
//*******************
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
Main main_obj = new Main();
frame.setLayout(new BorderLayout() );
frame.add(main_obj , BorderLayout.CENTER);
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
//*******************
}
vielen Dank im voraus!