Comment puis-je faire une JFrame d'une certaine taille, ne comprenant pas la frontière?
J'ai une JFrame que j'ai d'une certaine taille, à l'aide de setBounds. Toutefois, cela rend la fenêtre, y compris les frontières, que la taille (qui, avec le recul prend tout son sens). Mais ce que je veux, c'est pour la taille de la fenêtre, il être, dire, 800x600 plus les frontières. Ceci est important parce que je suis de dessin d'un objet Graphique de la BufferStategy de la JFrame, mais j'ai été le dessin en dessous de la barre de titre lors de l'utilisation d'une valeur y de moins de 20. J'imagine que différents systèmes d'exploitation (ou même de différents paramètres du système d'exploitation) peuvent avoir des épaisseurs différentes frontières, trop. Je pensais que les frontières ont été simplement plaqué sur une fenêtre par la suite, mais cela ne semble pas être le cas.
Alors, comment dois-je faire de l'espace à l'intérieur des frontières d'une certaine taille, indépendamment de l'épaisseur de la frontière? Aussi, pour rendre ma vie plus facile, comment dois-je faire le point 0, 0 être le coin supérieur gauche de la partie visible du contenu de l'image?
Par la façon dont, à l'aide de setUndecorated présente ses propres problèmes, donc je ne cherche pas qu'à l'heure actuelle.
Vous devez vous connecter pour publier un commentaire.
Pourquoi êtes-vous à l'aide d'un BufferStrategy. C'est une vieille AWT code. Swing est double tampon par défaut.
Quand on fait de la peinture custom dans le Swing, vous devez étendre Composite (ou de JComponent), puis remplacer le paintComponent() de la méthode. L'ajout de ce composant pour le volet contenu de l'image. Alors si vous suivez de kleopatra de conseils, vous n'aurez pas un problème.
Voir la section de la Balançoire tutoriel sur la La Peinture Custom pour plus d'informations et d'exemples.
E. G.
laisser le composant de dessin rapport à la taille de l'image en tant que son pref
puis suivez @André les points 2 et 3
Vous pouvez utiliser ceci pour éviter d'utiliser Conteneur.
j'ai une solution pour mon projet. Son tout à fait un vieux thread, peut-être quelqu'un veut le code. Essayez cette
Créer
Canvas canvas = new Canvas();
et
add(canvas);
à laJFrame
,créer
canvas.createBufferStrategy(2);
obtenir
BufferStrategy bs = canvas.getBufferStrategy();
créer
Graphics2D graphics2D = (Graphics2D) bufferStrategy.getDrawGraphics();
dessiner avec
graphics2D
dans unBufferedImage
.l'afficher sur l'écran
bufferStrategy.show();
Ajouter des contrôles à
canvas
de toutes sortes...essayer
graphics2D.translate(x,y)
pour déplacer la zone de travail à la position demesuré à l'aune de la fenêtre bords Encarts encarts...