Ola,
Sou novo aqui no GUJ e estou fazendo um jogo em swing bem simples, um puzzle e gostaria de saber como faço para posicionar um componente no frame ( qualquer X e Y que eu quiser).
Grato.
Ola,
Sou novo aqui no GUJ e estou fazendo um jogo em swing bem simples, um puzzle e gostaria de saber como faço para posicionar um componente no frame ( qualquer X e Y que eu quiser).
Grato.
O melhor seria você usar gerenciadores de layout…
T+
Sim eu sei que posso usar o gerenciador de layout mas é possivel fazer com que um elemento fique em qualquer posição do frame.
É sim. Basta fazer setLayout(null) no seu ContentPane e usar o método setBounds dos seus componentes.
Mas se você vai fazer um jogo, talvez o interessante você pintar o seu JFrame diretamente, sobrescrevendo o método paint.
Que tipo de puzzle vc está fazendo?
By the way, consulte o tutorial do Space Invaders no site do Coke and Code:
http://www.cokeandcode.com/node/6
E o seguinte livro (disponível online):
http://fivedots.coe.psu.ac.th/~ad/jg/
Eles são ótimos para te ensinar a fazer jogos em java! 
É possivel fazer com que os elementos deslisem? … um efeito de movimento.
Dá uma olhada lá no Coke and Code. O space invaders tem aliens mexendo o tempo todo! 
A maior parte dos games roda no seguinte loop:
while (oJogoNaoAcabou) {
leEventosDoTeclado();
processaLogica();
pintaATela();
}
Para fazer uma imagem se deslocar, basta somar um pouco o x e y dela a cara passo. Como esse laço deve rodar pelo menos umas 60 vezes por segundo, a impressão que seu usuário terá é de ela está mexendo.
Ola,
Aproveitando o mesmo topico… estava executando o codigo abaixo com o efeito que eu estava esperando, mas teve um detalhe que não gostei… pois quando faço o movimento do texto(ou imagem) o mesmo texto continua na posição inicial e quando termina a iteração o texto da posição inicial some… Existe uma maneira de resolver isto?
public static void main(String[] args) {
JFrame frame;
JLabel label;
JTextField field;
Point point;
Dimension dimension;
Icon icon;
Container container;
/**
* Seta parametro para um start na janela
*/
frame = new JFrame("Novo Janela");
point = new Point(312, 300);
frame.setLocation(point);
dimension = new Dimension(400, 300);
frame.setSize(dimension);
frame.setVisible(true);
/**
* Descubrir como setar qualquer posição no frame
*/
container = frame.getContentPane();
container.setLayout( null );
/**
* Adiciona uma imagem no frame
*/
//icon = new ImageIcon("./img/1000imagens.jpg");
//label = new JLabel(icon);
label = new JLabel("Teste");
int i = -1;
while (++i < 100) {
label.setBounds(i + 10, i + 10, 100, 20);
container.add(label);
frame.setContentPane(container);
}
//System.exit(-1);
}
Grato.
O ideal, mais fácil e mais simples, no caso de um jogo, é você mesmo pintar a tela, sobrescrevendo o paintComponent no JPanel ou JFrame.
Você chegou a dar uma olhada nos tutoriais que eu te passei?
Também confira esse link: http://java.sun.com/products/jfc/tsc/articles/painting/index.html#swing
E esse: http://java.sun.com/j2se/1.5.0/docs/guide/2d/spec/j2d-bookTOC.html
Mexer com os bounds de um componente dessa forma costuma a dar um péssimo resultado.