Opa, fala aí, tudo bem? Venho aqui pedir uma solução para o meu código.
O problema é o seguinte: todo componente que eu crio está ficando por debaixo dos meus frames e eu já tentei de tudo pra tentar jogar eles para cima. Como faço para deixá-los em cima com esse loop? Estou usando o framework do netbeans Form JFrame para facilitar a minha criação.
public class FrmGame extends javax.swing.JFrame implements Runnable{
private boolean running = false;
private Thread thread;
/**
* Constructor.
*/
public FrmGame() {
setNimbusLookAndFeel();
initComponents();
this.start();
}
/**
* Game loop.
*/
@Override
public void run(){
long lastTime = System.nanoTime();
double amountOfTicks = 60.0;
double ns = 1000000000 / amountOfTicks;
double delta = 0;
long timer = System.currentTimeMillis();
int frames = 0;
while(running){
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
while(delta >=1){
update();
delta--;
}
if(running){
render();
}
frames++;
if(System.currentTimeMillis() - timer > 1000){
timer += 1000;
System.out.println("FPS: "+ frames);
frames = 0;
}
}
stop();
}
/**
* Starts the thread.
*/
public void start(){
setVisible(true);
thread = new Thread(this);
running = true;
thread.start();
}
/**
* Stops the thread.
*/
public void stop(){
try {
thread.join();
running = false;
} catch (InterruptedException ex) {
throw new RuntimeException(ex);
}
}
/**
* Updates whatever object that needs to be updated.
*/
public void update(){
}
/**
* Renders whatever object that needs to be rendered.
*/
public void render(){
BufferStrategy bs = getBufferStrategy();
if (bs == null) {
createBufferStrategy(3);
return;
}
Graphics g = bs.getDrawGraphics();
//g.drawImage(new ImageIcon(getClass().getResource("main.jpg")).getImage(), 3, 26, this);
g.dispose();
bs.show();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle(GameConstants.GAME_TITLE);
setMaximumSize(new Dimension(GameConstants.GAME_WIDTH, GameConstants.GAME_HEIGHT));
setMinimumSize(new Dimension(GameConstants.GAME_WIDTH, GameConstants.GAME_HEIGHT));
setPreferredSize(new Dimension(GameConstants.GAME_WIDTH, GameConstants.GAME_HEIGHT));
setResizable(false);
getContentPane().setLayout(null);
jButton1.setText("jButton1");
getContentPane().add(jButton1);
jButton1.setBounds(10, 0, 73, 23);
pack();
setLocationRelativeTo(null);
}// </editor-fold>
private void setNimbusLookAndFeel(){
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(FrmGame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
}
public static void main (String args[]){
new FrmGame();
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
// End of variables declaration
}