Java rendimiento 2D lento - Redimensionando

Estoy usando Windows 7 con Aero y tengo una tarjeta gráfica muy rápida (Radeon 6870) que uso para jugar.

Tengo algunos problemas al cambiar el tamaño de los programas muy simples que hago con Java. Por ejemplo, este programa no hace absolutamente nada. No tiene oyentes de acción, ni bucles. Es simplemente una interfaz GUI con botones.

Resizing con la aceleración de OpenGL desactivada:

[Ver en pantalla completa

Se tarda aproximadamente un segundo en cambiar el tamaño de los componentes. Para mí eso es muy notable.

Resizing con aceleración OpenGL en:

He intentado habilitar la aceleración OpenGl para resolver este problema. Compilé el JAR y lo ejecuté conjava -Dsun.java2d.opengl=true -jar C:\Test.jar. El resultado esligeramente meno áreas negras alrededor de la ventana, pero mucho más parpadeo. De hecho, el parpadeo se muestra en gris en la captura de pantalla anterior.

El problema está presente en algún otro software?

No. Eclipse, Netbeans, Chrome y otras aplicaciones han sido probadas. Ninguno tiene este problema. Por lo tanto, debo concluir que debe haber algún problema con el código. Varias personas han ejecutado este código y han dicho que no tienen problemas. Si va a probarlo, asegúrese de cambiar el tamaño de la ventana del tamaño más pequeño al más grande de la pantalla, mientras mueve el mouse en movimiento circular.

Código
import java.awt.*;
import javax.swing.*;

public class JFrameWithButtonsTest {
    private int iScreen = 25;  
    private int iLocation = 10;
    JFrame frame = new JFrame();
    Container contentPane = frame.getContentPane();

    public JFrameWithButtonsTest() {
        JPanel northButtonPanel = new JPanel();
        northButtonPanel.setLayout(new GridLayout(2,2));
        northButtonPanel.add(new JButton(" I do nothing"));
        northButtonPanel.add(new JButton(" I do nothing"));
        northButtonPanel.add(new JButton(" I do nothing"));
        northButtonPanel.add(new JButton(" I do nothing"));
        contentPane.add(northButtonPanel, BorderLayout.NORTH);

        JPanel southButtonPanel = new JPanel();
        southButtonPanel.setLayout(new GridLayout(2,2));
        southButtonPanel.add(new JButton(" I do nothing"));
        southButtonPanel.add(new JButton(" I do nothing"));
        southButtonPanel.add(new JButton(" I do nothing"));
        southButtonPanel.add(new JButton(" I do nothing"));
        contentPane.add(southButtonPanel, BorderLayout.SOUTH);

        JPanel eastButtonPanel = new JPanel();
        eastButtonPanel.setLayout(new GridLayout(2,2));
        eastButtonPanel.add(new JButton(" I do nothing"));
        eastButtonPanel.add(new JButton(" I do nothing"));
        eastButtonPanel.add(new JButton(" I do nothing"));
        eastButtonPanel.add(new JButton(" I do nothing"));
        contentPane.add(eastButtonPanel, BorderLayout.EAST);

        boolean packFrame = false;
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = frame.getSize();
        frameSize.height = (int) (iScreen * screenSize.height / 100);
        frameSize.width = (int) (iScreen * screenSize.width / 100);
        frame.setSize(frameSize);
        frame.setLocation((screenSize.width - frameSize.width) / iLocation,
                (screenSize.height - frameSize.height) / iLocation);
        if (packFrame) {
            frame.pack();
            packFrame = true;
        } else {
            frame.validate();
        }
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
            e.printStackTrace();
        }
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new JFrameWithButtonsTest();
            }
        });
    }
}

Tenga en cuenta que el problema sigue presente sin esta línea:UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

Respuestas a la pregunta(4)

Su respuesta a la pregunta