Pregunta

He subclasificado java.awt .Frame y ha anulado el método paint () ya que deseo dibujar todo el contenido de la ventana manualmente.

Sin embargo, en el objeto gráfico, (0,0) corresponde a la esquina superior izquierda de la ventana dentro la decoración de la barra de título, no el primer píxel dibujable.

¿Puedo determinar la coordenada del primer píxel dibujable (es decir, la altura de la decoración) de manera multiplataforma, evitando el uso de un Mac OS X específico factor fudge ? ¿Me verán obligado a anidar un Panel componente para encontrar el área dibujable real de la ventana?

Aquí, mi código no puede centrar el cuadrado azul dentro del área pintable de la ventana:

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

Solución

Puede encontrar los recuadros insertos llamando al método getInsets (definido en Contenedor). Las inserciones de marcos se analizan en la parte superior de los documentos de API de marcos.

Otros consejos

¿Entonces quieres pintar toda el área y no quieres una barra de título?

Suponiendo que utiliza JDk 1.4 (al menos), puede declarar que el marco está "sin decorar" (java.awt.Frame # setUndecorated (boolean)). De esta forma, no se crea una barra de título y, por lo tanto, el área pintable de cuadros es la misma que el área consumida de cuadros.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top