JFrame sem o tamanho requisitado

8 respostas
swingjavaprogramação
K

Opa, olá amigos.
Tenho uma classe que extende JFrame e botei assim no seu construtor:

this.setMinimumSize(new Dimension(width, height));
this.setMaximumSize(new Dimension(width, height));
this.setPreferredSize(new Dimension(width, height));

O tamanho setado foi 1280x768. Porém, quando eu vou medir o tamanho da tela, mostra apenas 1274x739. Por que isso acontece e como eu resolvo esse problema?

8 Respostas

Lucas_Camara

Como vc está medindo o tamanho da tela?

K

staroski

Posta o código fonte dela.

K

Cara, eu apenas fiz uma configuração inicial.

public GameFrame(String title, int width, int height){
    super(title);
    this.setLayout(null);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setMinimumSize(new Dimension(width, height));
    this.setMaximumSize(new Dimension(width, height));
    this.setPreferredSize(new Dimension(width, height));
    //this.setSize(width.height); Eu tentei assim, mas nao mudou nada.
    this.setResizable(false);
    this.setFocusable(true);
    this.setLocationRelativeTo(null);
    this.setVisible(true);
    this.createBufferStrategy(3);
}
darlan_machado

O que ocorre é que o java não usa, efetivamente, pixels para definir o tamanho do JFrame.
Digamos, é uma medida quase exata, quase shing ling, entende?
Assim sendo, dificilmente você terá as medidas exatas que definiu, por conta do próprio java.

K

kkkkkk nossa que droga em. Então existe algum algoritmo ou alguma função para definir o tamanho em pixel do JFrame?

staroski

Não, é que o setSize não leva em conta o tamanho das bordas da janela (os insets), que pode variar de um Look and Feel para outro.
Entretanto você consegue obter o valor dos insets e ajustar o cálculo do tamanho.

Lucas_Camara

Se vc usar: setUndecorated(true); e medir de novo, provavelmente irá aparecer a medida que vc setou na sua janela.

Criado 2 de julho de 2019
Ultima resposta 3 de jul. de 2019
Respostas 8
Participantes 4