Como fazer para um JFrame inicializar no meio da tela

e ai galera, como eu faço para um formulário pequeno iniciar no meio da tela, e não no canto superior esquerdo como é o padrão, estou usando o netBeans 6.5, alguém pode me ajudar??

this.setLocationRelativeTo(null);

so colocar no construtor da classe ;D

2 curtidas

ae brother…

this.setLocationRelativeTo(null);

esse trecho acho que resolve a parada…^^
Não lembro se da pra modificar pela paleta de propriedade do JFrame…quase não uso o netbeans… mas é só setar o locationRelative como null.

nossa eu pegava o tamanho da tela e calculava o centro
rssrsr

pessoal ainda não consegui resolver ja que para mim fazer o que o colega me disse eu tinha que colocar o this.setLocationRelativeTo(null); dentro do método initComponents() que é o método que o proórpio netbeans cria e portanto não me deixa alterá-lo que são as propriedades dos componentes.

alguem pode me ajudar??

já que n dá para alterar o metodo initComponents()… coloque setLocationRelativeTo(null); logo abaixo onde é chamado no construtor da classe.
assim deve resolver

Tenta assim:

cria esse método na tua classe

public void centralizarComponente() { Dimension ds = Toolkit.getDefaultToolkit().getScreenSize(); Dimension dw = getSize(); setLocation((ds.width - dw.width) / 2, (ds.height - dw.height) / 2); }

Em seguida, lá no construtor, abaixo do initComponents(), criado pelo netbeans, você coloca:

centralizarComponente();

Abraços!

1 curtida

Se não consegue colcoar no initComponent basta colcoar antes de tornalo visivel

//no main que o netbeans cria deve ser algo assim
//new Tela().setVisible(true);
//basta voce mudar isso
Tela tela = new Tela();
tela.setLocationRelativeTo(null);
tela.setVisible(true);
1 curtida

vc também pode usar o Swing Application Framework, se seus formulários estendem JFrame.
procure ela no gerenciador de Libs do Netbeans e adicione ao seu projeto.

depois crie uma classe assim:

package br.exemplo;

import org.jdesktop.application.Application;
import org.jdesktop.application.SingleFrameApplication;

public class MyApp extends SingleFrameApplication {


    @Override
    protected void startup()
    {
        // substitua MainForm pelo formulario principal da tua aplicacao
        // esse form ira aparecer ja centralizado
        show(new MainForm());
    }

    public static MyApp getApplication()
    {
        return Application.getInstance(MyApp.class);
    }

    // main do projeto
    public static void main(String[] args)
    {
        // lanca a aplicacao
        launch(MyApp.class, args);
    }
}

crie um sub-pacote de nome resources (nesse caso, “br.exemplo.resources”), e nesse sub-pacote, crie um arquivo .properties de mesmo nome da classe acima (neste caso, MyApp.properties), com o seguinte conteúdo:

# Application global resources
Application.name = <digite aqui o Nome do app>
Application.title = <digite aqui o titulo do formulario principal>
Application.version = <digite aqui a versao do app>
Application.vendor = <digite o autor-empresa aqui>
Application.homepage = <digite aqui a sua home page>
Application.description = <digite aqui uma breve descr. do app>
Application.vendorId = ${Application.vendor}
Application.id = ${Application.name}
Application.lookAndFeel = system

essas variaveis acima serao acessiveis em toda a aplicacao, via o Swing App Framework

Agora vc pode criar um metodo nos formularios que vc quer mostrar centralizado:

package br.exemplo;

// gerencie os imports com a sua IDE

public class MyExampleForm extends JFrame {
    ...

    public void showForm() {
        // mostra o form centralizado. Se nao me engano, ele ateh guarda
        // a posicao da janela e na proxima vez que vc abrir o form, ele
        // estara na posicao onde vc tinha posicionado na ultima vez.
        MyApp.getApplication().show(this);
    }
    ...
}

esse metodo envolve um pouco mais de codigo inicial (uma classe pequena e um .properties), mas vc ja se familiariza com esse framework desktop. :slight_smile:

este e o metodo que o netbeans usa qdo vc manda criar um projeto de app desktop
feitow!

Ta ai uma solução complicada para um problema simples já resolvido.
^^

isso ae problema solucionado da uma maneira rápida.
vlw Marky.Casconcelos pela dica.

Ao abrir o formulário no netbeans, em propriedades do formulário clica em Código, vai ter uma opção chamada Gerar Centralizado, basta selecionar e pronto.

Formulário > Propriedades > Código > Gerar Centralizado ou usa esse código abaixo

this.setLocationRelativeTo(null);

1 curtida

Não precisa, Sua Classe Obviamente Estende um JFrame ou JDialog coloca no construtor como disse o amigo acima!

1 curtida

Perfeito !!! Esse código aqui e top …Roda em qualquer app.

Pronto… simples assim :sunglasses: