Heyho lieber Java Freunde,
Ich hab immoment Semesterferien und wollte meine Zeit ein wenig mit dem Programmieren von kleineren Java Spielen versüßen.
An sich bin ich derzeitig daran eine Oberfläche mit Frame aufzubauen - diese ist wie Folgt bisher:
CLASS1:
CLASS2:
Die Exception:
Bisherige Probleme mit dem ganzen:
Zum einen lässt sich in Frame das "this.setExtendedState(MAXIMIZED_BOTH);" nicht benutzen (wenn ich das benutze ist natürlich das darüber liegende "setSize." auskommentiert.
zum anderen sollte durch Screen ja eine FPS Anzeige im JFrame zu sehen sein, diese ist ebenfalls nicht zu sehen - habe es auch mit anderen Positionen versucht (sprich die Werte hinter "fps + "" "geändert) - jedoch immer noch nichts zu sehen.
Programmieren tue ich auf OS X mit einem Macbook Pro Retina 13' (Falls die Auflösung hier relevant seien sollte) & als IDE benutze ich Eclipse.
Hoffe das mir jemand helfen kann & bedanke mich recht herzlich schon im Voraus.
Mit freundlichen Grüßen Lacritz
Ich hab immoment Semesterferien und wollte meine Zeit ein wenig mit dem Programmieren von kleineren Java Spielen versüßen.
An sich bin ich derzeitig daran eine Oberfläche mit Frame aufzubauen - diese ist wie Folgt bisher:
CLASS1:
Code:
package net.Lacritz.td;
import javax.swing.JFrame;
public class Frame extends JFrame{
public static void main(String[] args){
new Frame();
}
public Frame(){
new JFrame();
this.setTitle("Lacritz");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
// this.setSize(800, 600);
this.setSize(1680, 1050);
// this.setExtendedState(MAXIMIZED_BOTH);
this.setUndecorated(true);
this.setResizable(false);
this.setVisible(true);
// this.setLocationRelativeTo(null);
Screen screen = new Screen(this);
this.add(screen);
}
}
CLASS2:
Code:
package net.Lacritz.td;
import java.awt.Graphics;
import javax.swing.JFrame;
public class Screen extends JFrame implements Runnable {
Thread thread = new Thread(this);
private int fps = 0;
Frame frame;
// uebergabe
public Screen(Frame frame) {
this.frame = frame;
thread.start();
}
public void paintComponent(Graphics g){
g.clearRect(0, 0, this.frame.getWidth(), this.frame.getHeight());
g.drawString(fps + "", 10, 10);
}
public void run() {
System.out.println("(Success) FRAME CREATED");
long lastFrame = System.currentTimeMillis();
int frames = 0;
// Game Loop
// Actually where the game is in
while (true) {
repaint();
frames++;
if(System.currentTimeMillis() - 1000 >= lastFrame){
fps = frames;
frames = 0;
lastFrame = System.currentTimeMillis();
}
// maximize the FPS to 500
try {
Thread.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Die Exception:
Code:
Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
at java.awt.Container.checkNotAWindow(Container.java:429)
at java.awt.Container.addImpl(Container.java:1038)
at java.awt.Container.add(Container.java:958)
at javax.swing.JFrame.addImpl(JFrame.java:540)
at java.awt.Container.add(Container.java:363)
at net.Lacritz.td.Frame.<init>(Frame.java:29)
at net.Lacritz.td.Frame.main(Frame.java:8)
Bisherige Probleme mit dem ganzen:
Zum einen lässt sich in Frame das "this.setExtendedState(MAXIMIZED_BOTH);" nicht benutzen (wenn ich das benutze ist natürlich das darüber liegende "setSize." auskommentiert.
zum anderen sollte durch Screen ja eine FPS Anzeige im JFrame zu sehen sein, diese ist ebenfalls nicht zu sehen - habe es auch mit anderen Positionen versucht (sprich die Werte hinter "fps + "" "geändert) - jedoch immer noch nichts zu sehen.
Programmieren tue ich auf OS X mit einem Macbook Pro Retina 13' (Falls die Auflösung hier relevant seien sollte) & als IDE benutze ich Eclipse.
Hoffe das mir jemand helfen kann & bedanke mich recht herzlich schon im Voraus.
Mit freundlichen Grüßen Lacritz