Fensterrahmen für Grafikinhalte

Dies ist mein erster Beitrag hier, und ich habe eine Frage, die mir ziemlich unklar vorkommt, die mich aber seit etwa einer Stunde beunruhigt.

Ich erstelle einen einfachen JFrame mit einem JPanel, aber der Windows 7-Rahmen scheint meine Sicht auf Teile des Panels zu blockieren. Wenn ich zum Beispiel ein kleines Quadrat bei der Koordinate 0,0 zeichne, wird es nicht angezeigt und ich vermute, dass es sich hinter dem Fensterrahmen befindet.

Ich habe versucht, mit pack, setsize, setpreferred size, setresizable und verschiedenen Layouts herumzuspielen, aber es gelingt mir nicht, die besten 20 Pixel oder so anzuzeigen!

Das habe ich:

public RedSunGame() {
super("Red Sun");

rs = new JPanel(new BorderLayout(), true);
rs.setPreferredSize(new Dimension(WIDTH, HEIGHT));
add(rs, "Center");

setPreferredSize(new Dimension(WIDTH, HEIGHT));
pack();
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}

BEARBEITEN:

Vielen Dank für alle Ihre Antworten, entschuldigen Sie den Mangel an Informationen :)

Ich verwende eine Doppelpufferstrategie, die ich in einem Buch gesehen habe. gameRender und paintScreen befinden sich in einer Standard-Spieleschleife. Meine RedSunGame-Klasse erweitert JFrame. Alle relevanten Codes, die Sie zusätzlich zu den oben genannten anfordern könnten:

private static final int WIDTH = 500;
private static final int HEIGHT = 500;
private JPanel rs;
private Graphics2D g2d;
private Image dbImage;

private void gameRender() {
//create buffer
if (dbImage == null){
  dbImage = createImage(WIDTH, HEIGHT);
  g2d = (Graphics2D)dbImage.getGraphics();
}
//clear screen
g2d.setColor(Color.white);
g2d.fillRect(0, 0, WIDTH, HEIGHT);

g2d.setColor(Color.blue);
g2d.setFont(font);
g2d.drawString("FPS: " + FPS, 0, HEIGHT);
g2d.fillRect(30, 30, 10, 10);
}

private void paintScreen() {
Graphics g;
try {
  g = getGraphics();
  if ((g != null) && (dbImage != null))
    g.drawImage(dbImage, 0, 0, null);
  Toolkit.getDefaultToolkit().sync();
  g.dispose();
}
catch (Exception e)
{ System.out.println("Graphics context error: " + e);  }
}

Mit meinen aktuellen Einstellungen sieht es so aus.http://i.imgur.com/qaabC.png

Dies ist, was passiert, wenn ich g2d.fillRect (30, 30, 10, 10) habe, die einzige Änderung sind die Koordinaten 30, 30 anstelle von 0,0. Es versteckt sich definitiv hinter der Grenze oben.http://i.imgur.com/uzfFe.png

Auch die Einstellung auf BorderLayout.CENTER scheint in keinem dieser Fälle einen Unterschied zu machen.

(Es tut uns leid, aber neue Benutzer können keine Bilder posten.)

BEARBEITEN: Ich habe es herausgefunden. Ich habe direkt zum JFrame gezeichnet. @ Guillaume Polet Ich verstehe, warum Sie die Malmethode von JFrames nicht außer Kraft setzen sollten, da sie auf den Frame und nicht auf das Bedienfeld abzielt, in dem der Inhalt angezeigt werden soll. Vielen Dank

Antworten auf die Frage(3)

Ihre Antwort auf die Frage