Pergunta

Eu tenho subclasse java.awt.Frame ter substituído o paint() método que gostaria de chamar todo o conteúdo da janela manualmente.

No entanto, o objeto graphics, (0,0) corresponde ao canto superior esquerdo da janela dentro a decoração barra de título, e não o primeiro pixel drawable.

Can I determinar a coordenada do primeiro pixel drawable (ou seja, a altura da decoração) de uma forma multi-plataforma, evitando usando um específico X-Mac OS fudge fator ? Será que vou ser forçado a um ninho Painel componente, a fim de encontrar a área drawable real da janela?

Aqui, o meu código não centralizar o quadrado azul dentro da área paintable da janela:

@Override
public void paint (Graphics g) {
    g.setColor(Color.BLUE);
    g.setPaintMode();
    g.fillRect(30, 30, getWidth()-60, getHeight()-60);
}
Foi útil?

Solução

Você pode encontrar o quadro inserções chamando o método getInsets (definido no Container). inserções de chassis são discutidos no topo dos docs Quadro API.

Outras dicas

Assim que você quer pintar toda a área e não querem uma barra de título em tudo?

Assumindo que você use o JDK 1.4 (pelo menos), então você pode declarar o quadro para ser "undecorated" (java.awt.Frame # setUndecorated (boolean)). Desta forma, nenhuma barra de título é criado e, portanto, a área de quadros que podem ser pintadas é o mesmo que a área de consumidos quadros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top