Como fazer para a aplicação swing abrir no centro da tela?

Galera desenvolvi uma aplicação, mas a mesma sempre a abre na parte superior da tela, obs foi montada no NetBeans, qual a propriedade eu mudo para tal configuração ou onde coloco o código para funcionar?

Resolvido:

public Cartao() {
       initComponents();
       setLocationRelativeTo(null);

para saber o tamanho da tela e centralizar um frame,

import java.awt.*;
import javax.swing.*;

public class CentrarTeste {
	
	public static void main(String[] args) {

		CentrarFrame frame = new CentrarFrame();
		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		frame.setVisible( true );
		
	}

}

class CentrarFrame extends JFrame{
	
	public CentrarFrame(){
		
		setTitle("CentrarTeste");
		setSize( DEFAULT_WIDTH, DEFAULT_HEIGHT );
		
		Toolkit kit = Toolkit.getDefaultToolkit();
		Dimension tamanhoTela = kit.getScreenSize();
		
		int width = tamanhoTela.width;
		int height = tamanhoTela.height;
		
		setLocation( width / 2, height / 2 );
		
	}
	
	public static final int DEFAULT_WIDTH = 300;
	public static final int DEFAULT_HEIGHT = 200;
	
}

espero ter ajudado.

Muito bom, eu tambem estava com essa duvida e as respostas foram bem esclarecedoras…

Boa !

Modifiquei o código para realmente aparecer centralizado:

        this.setLocation(((Toolkit.getDefaultToolkit().getScreenSize().width  / 2) - (this.getWidth() / 2)), 
                ((Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (this.getHeight() / 2)));

[quote=Pedrosa]Galera desenvolvi uma aplicação, mas a mesma sempre a abre na parte superior da tela, obs foi montada no NetBeans, qual a propriedade eu mudo para tal configuração ou onde coloco o código para funcionar?

[/quote]

Faço assim;

import javax.swing.Box;

public class cpc001 extends javax.swing.JFrame {

java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-490)/2, (screenSize.height-370)/2, 490, 370);
}

Espero ter ajudado
Lindberg

tentei todas estas opções e não consegui nenhuma :?

public class frmMainMenu extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JButton jButtonClient = null;

	/**
	 * This is the default constructor
	 */
	public frmMainMenu() {
		super();
		initialize();	
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(564, 367);
                this.setLocation(((Toolkit.getDefaultToolkit().getScreenSize().width  / 2) - (this.getWidth() / 2)),   
                        ((Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (this.getHeight() / 2)));
		this.setContentPane(getJContentPane());
		this.setTitle("Jframe");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJButtonClient(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jButtonClient	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonClient() {
		if (jButtonClient == null) {
			jButtonClient = new JButton();
			jButtonClient.setBounds(new Rectangle(15, 13, 143, 39));
			jButtonClient.setText("Clientes");
			jButtonClient.addMouseListener(new java.awt.event.MouseAdapter() {
				public void mouseClicked(java.awt.event.MouseEvent e) {
					new frmClient();
				}
			});
		}
		return jButtonClient;
	}

}

[quote=tmagostinho]tentei todas estas opções e não consegui nenhuma :?
[/quote]
Tenta com esta

this.setLocationRelativeTo(null);//caso dentro da própria classe
nomeDaClasse.setLocationRelativeTo(null);//caso fora da classe
1 curtida

tenta usando o

setLocation(100,100);

[quote=t3sting]tenta usando o

setLocation(100,100); [/quote]
Assim ele apenas vai colocar o frame há ± 100pixels da esquerda e ± 100 pixels do topo…

[quote=drsmachado][quote=tmagostinho]tentei todas estas opções e não consegui nenhuma :?
[/quote]
Tenta com esta

this.setLocationRelativeTo(null);//caso dentro da própria classe

nomeDaClasse.setLocationRelativeTo(null);//caso fora da classe [/quote]

Pois essa também já tentei isso! :?
Já não sei que fazer!
Com o setLocation(100, 100); e nem mexe!

Se voce está usando JFrame ou JDialog deve usar deve usar Frame.setLocationRelativeTo(null);
dessa forma ele ira centralizar a tua tela.

Se você estiver usando o JinternalFrame ai tem que fazer um calculo para re-enderizar a tela no centro da aplicação se for o caso me responde que te envio o codigo para a centralização dos internal frame.

ate Jardel

Tem algo errado com o q vc tá fazendo.
setLocationRelativeTo(null); coloca o JFrame no centro da tela.
Acabei de testar, alterando o teu initialize

    private void initialize() {
        this.setSize(564, 367);
//                this.setLocation(((Toolkit.getDefaultToolkit().getScreenSize().width  / 2) - (this.getWidth() / 2)),   
//                        ((Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (this.getHeight() / 2)));
//        this.setContentPane(getJContentPane());
        this.setLocationRelativeTo(null);
        this.setTitle("Jframe");
    }

E com a classe

public class Chama {
    public static void main(String[] args_){
        frmMainMenu frm = new frmMainMenu();
        frm.setVisible(true);
    }
}

E o JFrame é aberto bem ao centro.

Mesmo com a chamada dentro da classe a saída da tela foi como eu esperava.

mas vc especificou a classe com

this.setLocation();

?

[quote=Giboty]Se voce está usando JFrame ou JDialog deve usar deve usar Frame.setLocationRelativeTo(null);
dessa forma ele ira centralizar a tua tela.

Se você estiver usando o JinternalFrame ai tem que fazer um calculo para re-enderizar a tela no centro da aplicação se for o caso me responde que te envio o codigo para a centralização dos internal frame.

ate Jardel[/quote]
Ele está utilizando um JFrame, o código está na pergunta do tópico.
E, sim, funciona como eu falei.
Problemas com a máquina dele.

[quote=Giboty]Se voce está usando JFrame ou JDialog deve usar deve usar Frame.setLocationRelativeTo(null);
dessa forma ele ira centralizar a tua tela.

Se você estiver usando o JinternalFrame ai tem que fazer um calculo para re-enderizar a tela no centro da aplicação se for o caso me responde que te envio o codigo para a centralização dos internal frame.

ate Jardel[/quote]

Estou a usar JFrame. mas para o que é também posso usar um JInternalFrame e fazer FullScreen.

Veja os códigos que postei acima, observe e modifique de acordo com o que coloquei.

[quote=drsmachado][quote=Giboty]Se voce está usando JFrame ou JDialog deve usar deve usar Frame.setLocationRelativeTo(null);
dessa forma ele ira centralizar a tua tela.

Se você estiver usando o JinternalFrame ai tem que fazer um calculo para re-enderizar a tela no centro da aplicação se for o caso me responde que te envio o codigo para a centralização dos internal frame.

ate Jardel[/quote]
Ele está utilizando um JFrame, o código está na pergunta do tópico.
E, sim, funciona como eu falei.
Problemas com a máquina dele.[/quote]

Que tipo de problemas?
Eu estou a usar eclipse com o Visual Editor, no Windows 7 :?

eu no netBeans usava

setLocationRelativeTo(getRootPane()); mas aqui não funciona!

Eu uso o mesmo ambiente (eclipse + Windows 7 - 64b)
Segue aí o anexo com o print do resultado…


[quote=drsmachado]Eu uso o mesmo ambiente (eclipse + Windows 7 - 64b)
Segue aí o anexo com o print do resultado…[/quote]
A diferença entre os 32b e os 64b não tem nada a ver com isso :? realmente não entendo o que se passa :? desde que depois no .JAR funcione tudo é o que que importa.
O código que testou foi exactamente o que mandei da primiera vez certo?