Ajustar JFrame ao tamanho do monitor automaticamente na execução do projeto

Boa tarde Galera,

Estou iniciando no desenvolvimento Java.

Estou com a seguinte questão.
Aqui mesmo no fórum, localizei estes comando para o redimensionamento automatico do JFrame.

private void redimensionarTela() {

    Toolkit kit = Toolkit.getDefaultToolkit();
    Dimension tamTela = kit.getScreenSize();
    //Pegando a largura total da tela
    int larg = tamTela.width;
    //Pegando a altura total da tela
    int alt = tamTela.height;
    /*Se você quiser que o seu JFrame ocupe 70% da tela por exemplo 
    multiplique a largura e altura totais por 0,7*/

    //Mandando o JFrame utilizar suas dimensões
    desktop.setSize(larg, alt);
}

mais a minha duvida é a seguinte.

Primeiramente eu coloquei os comando acima dentro deste metodo redimensionarTela(), não sei tambem se é o certo, mais usando estes comando como faço para redimensionar o projeto na execução dele?
Poderiam me ajudar?

Algo que eu estava esquecendo, eu coloquei este metodo logo abaixo do initComponents() para iniciar na execução pensando que isto iria resolver, mais não sei agora se é o meu Netbeans, ou meu computador, ou também não é o correto né, enfim, mais quando adiciono este metodo o projeto só fica carregando e não abre, e quando tiro executa normalmente.

Peço ajuda de vcs, por favor.

Tem q ver oq está de errado no seu código, em vez de usar Desktop.setSize, use o this.setSize, olha em exemplo que eu fiz na minha aplicação:

private void pegarResolucao() {
        Toolkit t = Toolkit.getDefaultToolkit();
        Dimension dimensao = t.getScreenSize();
        this.setSize((dimensao.width + 5), (dimensao.height - 38));

 }

No construtor do meu Jframe:

public TelaPrincipal() {
        initComponents();
        setResizable(false);
        setLocationRelativeTo(null);
        pegarResolucao();      
 }

JeanJavaMan,

Funcionou perfeitamente seu exemplo em meu projeto.
Mais tenho uma duvida, a que se refere o + 5 e é -38?

Pq por exemplo, ao eu executar meu projeto, ele não centralizado mais.

Cara…
Se for em modo tela cheia, melhor usar
seuJFframe.setExtendedState(JFrame.MAXIMIZED_BOTH);

2 curtidas

Eu estava fazendo isso para ficar de acordo com a barra de tarefas, mas como o nosso colega falou @Chaybelucas é melhor utilizar o método dele, se for para iniciar já maximizado :slight_smile:

1 curtida

OK, mais este método maximiza a tela, certo. E os componentes dentro da mesma, se reorganiza conforme o tamanho da tela tbm, como funciona?

Não.
Ce tem duas opções(a segunda é a mais indicada)
1 Opção
Usar o setBounds(); para dar set na posição de cada componente. Porém, caso o cliente tenha uma tela de dimensão diferente da sua, os componentes não vão se ajustar à tela dele, porque você definiu posições fixas usando setBounds();

seuFrame.setLayout(null); // não fará uso de layout. Não é a maneira correta. seuComponente.setBounds(20,20,100,30); // setBounds(posição x, posição y, largura, altura); seuFrame.add(seuComponente);

2 Opção
Usar um layout no seu JFrame ou JPanel, que irá fazer o trabalho de redimensionar os componentes para as dimensões que o sistema for aberto. Porém, mais que um simples GridLayout() ou outro layout, melhor ainda é o Layout Manager, que sinceramente ainda estou aprendendo a usar. Esta é a forma correta de se criar uma tela com componentes, já prevendo a possibilidade de mudar as dimensões de um monitor. Dessa forma, os componentes se ajustam à JFrame.

seuFrame.setLayout(new GridLayout(5,1)); // setLayout(new GridLayout(qtdLinhas,qtdColunas)); seuFrame.add(seuComponente);

Encontrei aqui na apostila da Caelum o assunto sobre Gerenciadores de Layout. Eles são a forma correta.
Caelum - Gerenciadores de Layout

1 curtida

eu uso isto também para iniciar em tela cheia.

2 curtidas

@Chaybelucas Obrigado pela diga, eu testarei aqui e lhe respondo ok.

2 curtidas

Sem problema.