Jump to content
AJBM

SetFocus

Recommended Posts

AJBM

Boas!

Eu estou uma duvida eu tenho este codigo.

public class SpaceBattle extends JFrame {
   public SpaceBattle() {

    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setLayout(new BorderLayout());
    this.setSize(900, 900);
    this.setResizable(false);
    this.setVisible(true);
    this.add(new Board(), BorderLayout.CENTER);

   }
   public static void main(String[] args) {
    new SpaceBattle();
   }
}

public class Board extends JPanel implements ActionListener {
   private Timer timer;
   private Craft craft;
   private final short sleepTime=5;
   public Board() {
    this.setFocusable(true);
    this.setBackground(Color.BLACK);
    this.setDoubleBuffered(true);
    this.craft = new Craft();
    this.timer = new Timer(this.sleepTime, this);
    this.timer.start();
    addKeyListener(new TAdapter());
   }
   @Override
   public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2d = (Graphics2D) g;
    g2d.drawImage(craft.getImage(), craft.getX(), craft.getY(), this);
    Toolkit.getDefaultToolkit().sync();
    g.dispose();
   }
   @Override
   public void actionPerformed(ActionEvent e) {
    craft.move();
    repaint();
   }
   private class TAdapter extends KeyAdapter {
    @Override
    public void keyReleased(KeyEvent e) {
	    craft.keyReleased(e);
    }
    @Override
    public void keyPressed(KeyEvent e) {
	    craft.keyPressed(e);
    }
   }
}

Se eu tiver o método setVisible na Classe Jframe no sitio onde está, executa mas não aparece o que eu quero. se eu colocar o método depois de adicionar o board já funciona perfeitamente Eu queria saber porque?

Share this post


Link to post
Share on other sites
Monami

Porque quando fazes setVisible ele carrega os elementos já adicionados antes, e só depois fá-los aparecer.

Share this post


Link to post
Share on other sites
Ernest

Bom dia,

Eu experimentei este código no Eclipse depois de ter implementado a minha própria classe Craft , (já que não foi fornecida) e nos dois casos funciona perfeitamente.

Não vejo nenhuma rezão técnica para não poder adicionar componentes depois da visualização de uma JFrame. Até pode apagar e meter outros dinamicamente.

Se não funciona é por que na classe Craft deve haver alguma coisa que não corre bem.

Cordialmente

Ernest Duarte

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.