Obtendo área drawable de um quadro de AWT no Mac OS X?
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);
}
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.