O que tenho que fazer para conseguir as dimencoes da area cliente de um
JFrame?
Area Cliente
11 Respostas
Você quer as dimensões do JFrame ou do desktop do cliente?
Dimensões do desktop:
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int largura = screenSize.width;
int altura = screenSize.height;
Na verdade o que eu quero sao as dimencoes da area cliente de um JFrame.
A area cliente e o interior de um JFrame, ou seja, sem contar a barra de titulo e a borda. E onde fica o contentPane.
Eu estou tentando fazer uma animcao e preciso detectar colisao com as bordas da janela, porem a posicao [0, 0] fica no caso superior esquerdo da barra de titulo, assim eu so consigo detectar uma colisao quando o objeto ja esta na altura da barra de titulo ou dentro da borda esquerda.
Porquê você não coloca um JPanel e trabalha com o JPanel ao invés do JFrame?
Talvez um JInternalFrame possa resolver tbm 
JInternalFrame também tem as bordas da janela e tal. Tem que ser JPanel mesmo.
Eu ja pensei em resolver desta maneira mas ha um problema!!
Eu estou usado BufferStrategy para fazer DOUBLE-BUFFERING p/ remover a cintilacao, e os BufferStrategy so funcionam em subclasses da classe java.awt.Window.
Eu ja pensei em resolver desta maneira mas ha um problema!!
Eu estou usado BufferStrategy para fazer DOUBLE-BUFFERING p/ remover a cintilacao, e os BufferStrategy so funcionam em subclasses da classe java.awt.Window.
Com getBounds da classe Window vc já pode trabalhar. JFrame é uma Window toda cheia de bordas e talz…
flw!
O que exatamente retorna o metodo getBounds()??? Pq eu o usei no contentPane do meu JFrame para que eu podesse capturar a posicao deste e ele me retorna [x=0, y=0]!!!
Ele retorna a posição X e Y com relação ao JFrame, ( o que sempre será 0,0 ) mas tambem retorna o tamanho ( width e height ), que creio que esteja carreagada. Senão tem o preferredSize(). Algum deles deve retornar.
flw!
Usando os valores de altura e largura retornados pelo getBounds() eu obtive um resultado ainda pior!!! Com estes valores as colisoes sao identificadas pouco antes do objeto atingir a face direita do frame e muito antes de atingir a face inferior!!!
P/ falar a verdade eu acho que o sistema de bufferizacao atraves de BufferStrategy’s so deve ser realmente funcional em sistemas executando em tela cheia ou frames sem decoracao!!
Bom, mesmo assim muito obrigado pelo ajuda!!!
Bom ainda nao fiz teste mas acredito que, segundo a documentacao, ja e conclusivo. O metodo calculateInnerArea(JComponent, Rectangle) da classe SwingUtilities deve resolver o problema proposto.