Pregunta

Estoy intentando utilizar el doble buffer con un lienzo, algo que nunca he hecho antes. Aproveché los tutoriales en línea, y configurar el código siguiente para crear una instancia de un lienzo y configurar el almacenamiento en búfer para él. Codifiqué el proceso completo, incluyendo los graphiocs de renderizado (no mostrado aquí), y el compilador acepta.

 volCanvas = new VolCanvas();
 volCanvas.setBackground(Color.black);
 volCanvas.setBounds(10, 380, 1180, 125);
 add(volCanvas);
 volCanvas.createBufferStrategy(2);            (Program blows up here)
 offScreen = volCanvas.getBufferStrategy();
 ofsg = (Graphics2D) offScreen.getDrawGraphics();

Sin embargo, el programa hace saltar en la línea de marcado en el código de abajo. El motor de ejecución emite una excepción de estado ilegal, con la explicación "componente debe tener un compañero válido".

Por lo que yo puedo decir, el código fuente es esencialmente como lo he visto en varios ejemplos, así que no tengo ni idea de lo que está pasando aquí. Cualquier ayuda sería muy apreciada.

Gracias,

John Doner

¿Fue útil?

Solución

  

componente debe tener un compañero válido".

Básicamente, significa que su interfaz gráfica de usuario no es visible o no ha agregado el componente a una interfaz gráfica de usuario visible.

Sus otras preguntas sobre el acuerdo foro con aplicaciones Swing. No se debe utilizar un componente AWT (lienzo) en una aplicación Swing. No pintura personalizada en un JComponent o JPanel. Oscilación es amortiguada por doble defecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top