[Resolvido] Problema com posicionamente de botões

Forma correta, ele deveria aparecer sempre assim:
http://img153.imageshack.us/i/maneira1.jpg/

Porem as vezes eu do Run no codigo e não apareçe o botão:
http://img690.imageshack.us/i/maneira2a.jpg/

Se eu minimizar e restaurar o botão apareçe no centro com o tamanho incorreto:
http://img709.imageshack.us/img709/3880/maneira2b.jpg

PS: As 3 Schenshots foram tiradas sem mudar 1 linha no source, apenas dando Run novamente.

Segue o codigo:

[code]import java.awt.FlowLayout;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class janela extends JFrame {

private JLabel aJanela;

public janela() {

super("Daxsys - Sistema de automação de Cancelas");
setLayout(new FlowLayout());
Point centro = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint();
int largJanela = 800;
int altJanela = 600;
setBounds(centro.x - largJanela / 2, centro.y - altJanela / 2, largJanela, altJanela);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setIconImage(new ImageIcon("C:\\Users\\Daxsys\\Pictures\\icone.jpg").getImage());
setVisible(true);
setLayout(new FlowLayout());

/*Botões*/
ImageIcon iCadastrar = new ImageIcon("C:\\Users\\Daxsys\\Pictures\\cadastrar.png");
JButton bCadastrar = new JButton(iCadastrar);
bCadastrar.setBounds(10, 10, 120, 150);
bCadastrar.setActionCommand("Cadastrar");
add(bCadastrar);

}
}[/code]

[code]public class Aplicação{
public static void main(String[] args){

janela principal = new janela();

}
}[/code]

@edit

Achei o erro, eu estava usando

setLayout(new FlowLayout());

Então o setLayout assumia o Layout

coloquei

setLayout(null);

E funcionou, foi falta de atenção minha

Obrigado thiagolopes por tudo.

Amigo tente mudar as seguintes linhas de comando para ver se você nota algum resultado.

O construtor ficaria mais ou menos assim:

 public  janela() {  
       
     super("Daxsys - Sistema de automação de Cancelas");  
     //[b]Seria facultativo você declarar o gerenciador de layouts abaixo, visto que o FlowLayout é padrão no //java[/b]
     setLayout(new FlowLayout());  
     Point centro = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint();  
     int largJanela = 800;  
     int altJanela = 600;  
     setBounds(centro.x - largJanela / 2, centro.y - altJanela / 2, largJanela, altJanela);  
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
     setIconImage(new ImageIcon("C:\\Users\\Daxsys\\Pictures\\icone.jpg").getImage());  
      
     /*Botões*/  
     ImageIcon iCadastrar = new ImageIcon("C:\\Users\\Daxsys\\Pictures\\cadastrar.png");  
    JButton bCadastrar = new JButton(iCadastrar);  
     bCadastrar.setBounds(10, 10, 120, 150);  
     bCadastrar.setActionCommand("Cadastrar");  
     add(bCadastrar);  
     setVisible(true);  
 }  
 }  

Tenta rodar o código acima para ver se da algum resultado no problema.Uma dica que eu do é sempre deixar a chamada do método setVisible(true);.

[quote=thiagolopes]Amigo tente mudar as seguintes linhas de comando para ver se você nota algum resultado.

O construtor ficaria mais ou menos assim:

 public  janela() {  
       
     super("Daxsys - Sistema de automação de Cancelas");  
     //[b]Seria facultativo você declarar o gerenciador de layouts abaixo, visto que o FlowLayout é padrão no //java[/b]
     setLayout(new FlowLayout());  
     Point centro = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint();  
     int largJanela = 800;  
     int altJanela = 600;  
     setBounds(centro.x - largJanela / 2, centro.y - altJanela / 2, largJanela, altJanela);  
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
     setIconImage(new ImageIcon("C:\\Users\\Daxsys\\Pictures\\icone.jpg").getImage());  
      
     /*Botões*/  
     ImageIcon iCadastrar = new ImageIcon("C:\\Users\\Daxsys\\Pictures\\cadastrar.png");  
    JButton bCadastrar = new JButton(iCadastrar);  
     bCadastrar.setBounds(10, 10, 120, 150);  
     bCadastrar.setActionCommand("Cadastrar");  
     add(bCadastrar);  
     setVisible(true);  
 }  
 }  

Tenta rodar o código acima para ver se da algum resultado no problema.Uma dica que eu do é sempre deixar a chamada do método setVisible(true);.[/quote]

Thiago, tentei fazer o que você falou, porem agora toda vez que eu inicio fica como na imagem 3
http://img709.imageshack.us/img709/3880/maneira2b.jpg

Depois dessa modificação o botão parou de obdecer as ordens do setBounds, ele apareçe no centro da tela e com tamanho diferente do denifinido no bCadastrar.setBounds(10, 10, 120, 150);

Nao entendi, no caso você quer q o JButton fica do lado esquerdo, conforme figura 01.É isto mesmo ?

Isso mesmo deveria ser como na imagem 1, antes deu modificar o codigo como você mencionou ele as vezes executava do lado esquerdo com tamanho 150, 120 e as vezes no centro com tamanho incorreto

Agora, depois da modificação ele sempre executa no centro com tamanho incorreto.

ImageIcon iCadastrar = new ImageIcon("C:\\Users\\Daxsys\\Pictures\\cadastrar.png"); JButton bCadastrar = new JButton(iCadastrar); bCadastrar.setBounds(10, 10, 120, 150); bCadastrar.setActionCommand("Cadastrar"); add(bCadastrar); setVisible(true);

Amigo eu alterei o código abaixo:

[code]

setLayout(new FlowLayout(FlowLayout.LEFT));
getContentPane().add(bCadastrar);
setVisible(true);[/code]

Como você conseguiu resolver o problema?

Mudei disso:

setLayout(new FlowLayout());  

Para isso:

setLayout(null);  

Não consigo acreditar que perdi minha manha inteira nisso uma coisa tão boba, foi falta de atenção da minha parte :cry: