O
OomarsmanoO
Gast
Hey, hier mein Problem:
Ich öffne mit JFrame ein Fenster, das 600x800 groß sein sollte. Das ist es auch, wenn ich mit getHeight abfrage, doch wenn ich beispielsweise mit dem mouseMotionListener schaue, dann seh ich, dass es genau 609px hoch ist und 809px breit :/ Wo liegt der Fehler, bzw. warum ist das so?
Danke für eure Hilfe
Hier der Code:
Ich öffne mit JFrame ein Fenster, das 600x800 groß sein sollte. Das ist es auch, wenn ich mit getHeight abfrage, doch wenn ich beispielsweise mit dem mouseMotionListener schaue, dann seh ich, dass es genau 609px hoch ist und 809px breit :/ Wo liegt der Fehler, bzw. warum ist das so?
Danke für eure Hilfe
Hier der Code:
Java:
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.*;
import java.io.IOException;
import javax.swing.JFrame;
public class game2 extends Canvas implements Runnable, KeyListener, MouseListener {
private boolean running = false;
private boolean right, left, up;
private final static int Max_FPS = 60;
private final static int Max_FrameSkips = 5;
private final static int FramePeriod = 1000/Max_FPS;
public final static int HEIGHT=600;
public final static int WIDTH=800;
player p;
public game2(){
//constructor
}
private void start() {
running = true;
(new Thread(this)).start();
addKeyListener(this);
addMouseListener(this);
}
private void stop(){
running = false;
}
private void init() throws IOException {
}
public void run() {
long begintime;
long timediff;
long timepassed = 0;
int sleeptime;
int framesSkipped;
int frames = 0;
try {
init();
} catch (IOException e2) {}
while(running){
begintime = System.currentTimeMillis();
framesSkipped = 0;
update();
try {
render();
} catch (IOException e1) {}
timediff = System.currentTimeMillis()-begintime;
sleeptime=(int) (FramePeriod - timediff);
if(sleeptime>0){
try {
Thread.sleep(sleeptime);
} catch (InterruptedException e) {}
}
while(sleeptime<0 && framesSkipped < Max_FrameSkips){
update();
sleeptime+=FramePeriod;
framesSkipped++;
}
frames++;
timepassed += timediff+sleeptime;
if(timepassed>1000L){
System.out.println(frames);
timepassed=0;
frames = 0;
}
}
}
private void update() {
}
private void render() throws IOException{
BufferStrategy bs = getBufferStrategy();
if(bs==null){
createBufferStrategy(3);
return;
}
Graphics g = bs.getDrawGraphics();
g.setColor(new Color(200, 200, 200));
g.fillRect(0, 0, getWidth(), getHeight());
g.dispose();
bs.show();
}
public static void main(String[] args){
game2 game2 = new game2();
game2.setMinimumSize(new Dimension(WIDTH,HEIGHT));
game2.setMaximumSize(new Dimension(WIDTH,HEIGHT));
game2.setPreferredSize(new Dimension(WIDTH,HEIGHT));
JFrame frame = new JFrame("Spiel");
frame.setDefaultCloseOperation(3);
//frame.setLayout(new BorderLayout());
frame.add(game2,"Center");
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
game2.start();
}
public void mouseClicked(MouseEvent e) {
System.out.println("x: "+e.getX());
System.out.println("y: "+e.getY());
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_RIGHT){
right = true;
}
if(e.getKeyCode()== KeyEvent.VK_LEFT){
left = true;
}
if(e.getKeyCode()== KeyEvent.VK_UP){
up = true;
}
}
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_RIGHT){
right = false;
}
if(e.getKeyCode()== KeyEvent.VK_LEFT){
left = false;
}
if(e.getKeyCode()== KeyEvent.VK_UP){
up = false;
}
}
public void keyTyped(KeyEvent e) {
}
}