JApplet mit BufferStrategy problem

SkonroX

Aktives Mitglied
Hey..
habe folgendes Problem:
wollte mich mal an JApplets versuchen, jedoch nicht ohne die BufferStrategy.. also erstmal Canvas erstellt.. zum applet hinzugefügt (funnktionier auch), aber wenn ich dann etwas mit BufferStrategy.getDrawGraphics schreiben will funktioniert es nicht, ebenso geht es nicht eine endlosschleife laufen zu lassen für das programm..
Code:
Java:
import java.awt.Dimension;
import java.awt.image.BufferStrategy;
import javax.swing.JApplet;
import javax.swing.JOptionPane;
@SuppressWarnings( "serial" )
public class Applet extends JApplet
{
	private boolean 				ProgramIsRunning 	= true;
	public static java.awt.Canvas 	Canvas 				= null;
	public static BufferStrategy 	BufStrat			= null;
	public void init()
	{
		setSize( new Dimension( 640, 480 ) );
		Canvas = new java.awt.Canvas();
		Canvas.setIgnoreRepaint( true );
		Canvas.createBufferStrategy( 1 );
		add( Canvas );
		BufStrat = Canvas.getBufferStrategy();
	}
	public void start()
	{
		try 
		{
	        javax.swing.SwingUtilities.invokeAndWait( new Runnable() 
	        {
	            public void run() 
	            {
	            	while( true )
	            	{
	            		if( ProgramIsRunning )
	            		{
		                	new Render( "main" );
		                	try{
								Thread.sleep( 250 );
							}
							catch( InterruptedException e ){
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
	            		}
	            	}
	            }
	        });
	    } catch ( Exception e ) { JOptionPane.showMessageDialog( null, e.getMessage() ); }
	}
	public void stop(){}
	public void destroy(){}
}
Java:
import java.awt.Color;
import java.awt.Toolkit;
public class Render
{
	public Render( String what )
	{
		Applet.BufStrat.getDrawGraphics().clearRect( 0, 0, Applet.WIDTH, Applet.HEIGHT );
		Applet.Canvas.setBackground( Color.BLACK );
		if( what.equals( "main" ) )
			RenderChangeMenu();
		Toolkit.getDefaultToolkit().sync();
		Applet.Canvas.paint( Applet.BufStrat.getDrawGraphics() );
		Applet.BufStrat.getDrawGraphics().dispose();
		Applet.BufStrat.show();
	}
	private void RenderChangeMenu()
	{
		Applet.BufStrat.getDrawGraphics().setColor( Color.GREEN );
		Applet.BufStrat.getDrawGraphics().drawString( "Testing", 50, 50 );
	}
}

lg
 
Hätte ich spontan auch gedacht, aber dieses Canvas und BufferStrategy sieht nach dem aus, was gelegentlich Active Rendering genannt wird - da gelten andere Gesetze (aber ich habe es noch nicht verwendet, deswegen kann ich nicht viel dazu sagen ... und die Nachfrage: "Warum machst'n nich 'n stinknormales Applet? ???:L" will der Threadersteller vermutlich nicht hören 😉 )
 
Okay.. also wahrscheinlich von swing auf awt applet umstellen..
aber was ist EDT ?
und ja ich möchte gerne bei BufferStrategy bleiben, weil ich damit gute erfahrung gemacht habe 🙂

lg
 
Warum überschreibst du nicht die paint(Component)?
Kannst die BS weiter verwenden, und dir kann gleich jeder helfen, da es der übliche Weg ist.

btw. schaut das
Java:
if( what.equals( "main" ) )
            RenderChangeMenu();
sehr Anti-OO aus.
 

Neue Themen


Zurück
Oben