Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.03.2012, 21:07

[JAVA] Canvas Problem(Größe)

Ich habe folgendes Problem:

Ich versuche ein Canvas (der größe 800x600) in ein JFrame zu packen um dieses dann zum Zeichnen zu benutzen. Wenn ich jedoch
am Ende nachfrage, ist die Höhe und die Breite des Canvas 10 Pixel größer als angegeben!
-- Dies trat bei Windows 7 64bit auf!

Wenn ich nun den gleichen Code auf meinem macbook ausführe, dann stimmt die Größe des Canvas wieder.
Was läuft hier falsch? Ich schätze ich übersehe hier etwas ganz offensichtliches, jedoch komme ich nicht darauf da es auf meinem
macbook richtig läuft und auf meinem Windows pc nicht.

Die Java version des macbooks ist 1.6.0_29
Die Java version des Windows pc's ist 1.6.0_31 <- Eventuell ein Problem dieses updates?

Und schließlich der Code den ich verwende (vereinfacht, jedoch gleiches Ergebnis):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.awt.Canvas;
import java.awt.Dimension;

import javax.swing.JFrame;

public class Weird {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        Canvas canvas = new Canvas();
        int width = 800;
        int height = 600;
        canvas.setBounds(0, 0, width, height);
        canvas.setMaximumSize(new Dimension(width, height));
        canvas.setMinimumSize(new Dimension(width, height));
        canvas.setIgnoreRepaint(true);
    
        frame.add(canvas);
        frame.pack();
        frame.setResizable(false);
        frame.setVisible(true);
        
        canvas.createBufferStrategy(2);
        System.out.println(canvas.getWidth());
        System.out.println(canvas.getHeight());
    }
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Shacony« (17.03.2012, 21:21)


2

18.03.2012, 17:32

Ich bin in einem anderen Forum auf die Antwort gekommen: setResizable(false) ändert die Größe des Canvas (Warum auch immer, ich finde das totalen schwachsinn ó0) und sollte man frame.pack() nicht nach frame.setResizable(false) aufrufen, bekommt man das Canvas (passiert auch bei JPanel) 10px größer als angegeben zurück (In breite und höhe). Nuja etwas gelernt hab ich, nicht nur setVisible(true) nur am Ende, sondern auch pack();setVisible(true); ganz am Ende stehen haben :)