Question

J'ai sous-classé java.awt .Frame et remplacé le paint () comme méthode pour dessiner manuellement tout le contenu de la fenêtre.

Toutefois, 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, et non au premier pixel dessiné.

Puis-je déterminer les coordonnées du premier pixel dessiné (c'est-à-dire la hauteur de la décoration) de manière multiplate-forme, en évitant d'utiliser un élément spécifique à Mac OS X facteur fudge ? Vais-je être obligé d'imbriquer un Panel composant afin de trouver la surface réelle de la fenêtre?

Ici, mon code ne parvient pas à centrer le carré bleu à l'intérieur de la zone pouvant être peinte de la fenêtre:

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

La solution

Vous pouvez trouver les encarts de cadre en appelant la méthode getInsets (définie dans Container). Les encarts de cadre sont discutés en haut des documents de l’API Frame.

Autres conseils

Vous voulez donc peindre toute la zone et vous ne voulez pas du tout de barre de titre?

En supposant que vous utilisiez JDk 1.4 (au moins), vous pouvez alors déclarer le cadre comme étant "non décoré". (java.awt.Frame # setUndecorated (boolean)). De cette manière, aucune barre de titre n'est créée et la zone pouvant être peinte par les cadres est identique à celle utilisée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top