2008-10-11 2 views
4

J'ai sous-classé java.awt.Frame et j'ai surchargé la méthode paint() car je souhaite dessiner tout le contenu de la fenêtre manuellement.Récupération de la zone d'un cadre AWT dans Mac OS X?

Cependant, sur l'objet graphique, (0,0) correspond au coin supérieur gauche de la fenêtre à l'intérieur de la décoration de la barre de titre, pas le premier pixel pouvant être tracé. Puis-je déterminer la coordonnée du premier pixel étirable (c'est-à-dire la hauteur de la décoration) de manière multiplateforme, en évitant d'utiliser un facteur de fudge spécifique à Mac OS X? Est-ce que je serai forcé d'imbriquer un composant Panel afin de trouver la zone réellement dessinable de la fenêtre?

Voici mon code ne centre du carré bleu dans la zone paintable de la fenêtre:

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

alt text http://x13n.com/paintable-area.png

Répondre

2

Vous pouvez trouver le cadre EISN appelant la méthode getInsets (défini dans le conteneur). Les encarts de cadre sont décrits en haut des documents de l'API Frame.

2

Vous voulez donc peindre toute la zone et ne voulez pas du tout une barre de titre? En supposant que vous utilisiez JDk 1.4 (au moins), vous pouvez déclarer que l'image est "non décorée" (java.awt.Frame # setUndecorated (boolean)). De cette façon, aucune barre de titre n'est créée et, par conséquent, la zone de cadres pouvant être peinte est la même que la zone consommée par les cadres.