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

public class Test extends Panel {

    private Frame frame;

    public Test() { SwingUtilities.invokeLater(() -> {

        frame = new Frame();
        frame.setUndecorated(true);
        frame.add(this);
        frame.pack();
        frame.setSize(300, 300);
        frame.setLocation(200, 200);
        frame.setVisible(true);
    }); }

    private void Dispose() {
        SwingUtilities.invokeLater(() -> { frame.dispose(); });
    }

    @Override
    public void paint(Graphics graphics) {

        Graphics2D g2d = (Graphics2D) graphics;

        VolatileImage img = createVolatileImage(200, 200);
        img.validate(getGraphicsConfiguration());
        Graphics2D g = img.createGraphics();
        g.setColor(Color.blue);
        g.fillRect(0, 0, 200, 200);
        g.setColor(Color.red);
        g.fillPolygon(new int[] {10, 100, 190},
                      new int[] {190, 10, 190}, 3);
        g.dispose();

        g2d.setColor(Color.black);
        g2d.fillRect(0, 0, getWidth(), getHeight());

        //g2d.rotate(Math.toRadians(3.0));
        g2d.drawImage(img, 50, 50, null);

        img.flush();
        img = null;
    }

    public static void main(String[] args) throws Exception {

        System.setProperty("sun.java2d.opengl", "true");
        System.setProperty("sun.java2d.opengl.fbobject" , "false");

        Test test = new Test();
        Thread.sleep(3000);
        test.Dispose();
    }
}
