LÄR DIG JAVA

GUI med JFrame

GUI står för Graphical User Interface, ett grafiskt användargränssnitt. I den här guiden använder vi Swing från Javas java.desktop-modul. JFrame är fönstret och JPanel är komponenten som vi ritar spelet i.

Skapa fönstret på EDT

import javax.swing.*;
import java.awt.*;

public class WindowDemo {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JPanel panel = new JPanel() {
                @Override protected void paintComponent(Graphics g) {
                    super.paintComponent(g);
                    g.drawString("Hej från Java!", 30, 50);
                }
            };
            panel.setPreferredSize(new Dimension(640, 640));
            JFrame frame = new JFrame("Mitt fönster");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setContentPane(panel);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        });
    }
}

invokeLater schemalägger skapandet på Swings händelsetråd. pack anpassar fönstret efter innehållets önskade storlek; fönstrets kanter ingår alltså utöver panelens 640 × 640 pixlar.

Överskugga paintComponent för egen målning och anropa super.paintComponent först. repaint begär en framtida ommålning; det målar inte omedelbart och flera begäranden kan slås ihop. I spelet begär timern ommålning efter varje uppdatering. Swing hanterar dubbelbuffringen åt oss.