1ª classe
import java.awt.<em>;
import javax.swing.</em>;
import java.awt.geom.*;
public class PainelPintura extends JPanel {
private int escolha=0;
private int rotacao=0;
public void paint (Graphics g)
{
int x[] = { 192, 208, 208, 204, 204, 196, 196, 192}; //Desenhar os lugares para as bobinas
int y[] = { 115, 115, 131, 131, 141, 141, 131, 131}; //idem
int k[] = { 170, 230 };
int p[] = { 192, 202, 202, 192 }; //Desenhar as ranhuras do rotor
int l[] = { 150, 150, 160, 160 }; //idem
int p1[] = { 120, 100, 80, 80, 135, 155 }; //Desenhar os pés
int p2[] = { 245, 295, 295, 315, 315, 270 }; //idem
int p3[] = { 280, 300, 320, 320, 265, 245 }; //idem
int bo1X[] = { 196, 204, 204, 196 }; //Desenha as bobinas
int bo1Y[] = { 119, 119, 127, 127 }; //idem
Graphics2D g2d = ( Graphics2D) g;
if(escolha == 0){
//Desenhar o fundo
g2d.setPaint(Color.blue);
g2d.fill(new Ellipse2D.Double(100,100,200,200));
//Desenhar o espaço para o rotor
g2d.setPaint(Color.white);
g2d.fill(new Ellipse2D.Double(140,140,120,120));
//Desenha os lugares para as bobinas, mas não imprime na tela.
GeneralPath bob = new GeneralPath();
bob.moveTo(x[0], y[0]);
for ( int i = 1; i < x.length; i++ )
bob.lineTo( x[i], y[i] );
bob.closePath();
for (int i = 0; i < 6; i++)
{
g2d.setPaint(Color.white);
g2d.fill(bob);
g2d.rotate(Math.PI/3.0 , 200, 200);
}
//Desenhar os pés do motor
g2d.setPaint(Color.blue);
GeneralPath pe1 = new GeneralPath();
pe1.moveTo( p1[0], p2[0] );
for (int i = 1; i<p1.length; i++)
pe1.lineTo( p1[i], p2[i] );
pe1.closePath();
g2d.fill(pe1);
GeneralPath pe2 = new GeneralPath();
pe2.moveTo( p3[0], p2[0] );
for (int i = 1; i<p3.length; i++)
pe2.lineTo( p3[i], p2[i] );
pe2.closePath();
g2d.fill(pe2);
//Desenhar o rotor
g2d.setPaint(Color.red);
g2d.fill(new Ellipse2D.Double(150,150,100,100));
g2d.setPaint(Color.blue);
g2d.fill(new Ellipse2D.Double(192,192,16,16));
}
else
{
if(escolha == 1)
{
//Desenha as ranhuras do rotor
GeneralPath rotor = new GeneralPath();
rotor.moveTo( p[0],l[0] );
for (int i = 1; i<p.length; i++)
rotor.lineTo( p[i], l[i] );
rotor.closePath();
for (int f = 0; f < rotacao; f++) //Para "apagar" o que já foi desenhado
{
for (int w = 0; w < 9; w++)
{
g2d.setPaint(Color.red);
g2d.fill(rotor);
g2d.rotate(Math.PI/4.0 , 200, 200);
}
g2d.rotate(Math.PI/3.0, 200, 200);
}
for (int i = 0; i < 9; i++) //Desenhar as ranhuras do rotor
{
g2d.setPaint(Color.white);
g2d.fill(rotor);
g2d.rotate(Math.PI/4.0 , 200, 200);
}
}
else
{
if(escolha == 2)
{
//Desenha os condutores
GeneralPath bob1 = new GeneralPath();
bob1.moveTo( bo1X[0], bo1Y[0] );
for (int i = 1; i<bo1X.length; i++)
bob1.lineTo( bo1X[i], bo1Y[i] );
bob1.closePath();
//imprimir na tela as bobinas
for(int t = 0; t < rotacao; t++) //"Apagar" as bobinas da tela
{
for(int branco = 0; branco<6; branco++)
{
g2d.setPaint(Color.white);
g2d.fill(bob1);
g2d.rotate(Math.PI/3.0, 200, 200);
}
g2d.rotate(Math.PI/3.0, 200, 200);
}
for(int j = 0; j<3; j++) //imprimir a primeira metade das bobinas
{
g2d.setPaint(Color.red);
g2d.fill(bob1);
g2d.rotate(Math.PI/3.0 ,200, 200);
}
for(int m = 0; m<3; m++) //imprimir a segunda metade das bobinas
{
g2d.draw(bob1);
g2d.rotate(Math.PI/3.0 ,200 ,200);
}
}
}
}
}
public void draw (int po, int rotac)
{
escolha = po;
rotacao = rotac;
repaint();
}
}
2ª classe…
import java.awt.<em>;
import java.awt.event.</em>;
import javax.swing.<em>;
import java.awt.geom.</em>;
public class Teste2D extends JPanel{
private PainelPintura pint = new PainelPintura();
private int rot1=0, rot2=0;
public Teste2D()
{
pint.draw(0,0);
add(pint);
Condutor cond = new Condutor();
Rotor rot = new Rotor();
cond.start();
rot.start();
}
class Condutor extends Thread {
public Condutor()
{}
public void run()
{
for(int ll=0; ll<120; ll++) {
try{
pint.draw(2, rot2);
Thread.sleep(100);
rot2++;
}
catch(Exception tu){} }
} }
class Rotor extends Thread {
public Rotor()
{
}
public void run()
{
for( int kk=0; kk<30; kk++){
try{
pint.draw(0,0);
pint.draw(1, rot1);
Thread.sleep(300);
rot1++;
}
catch(Exception e){} }
} }
}
3ª classe
import javax.swing.<em>;
import java.awt.</em>;
import java.awt.event.<em>;
import java.awt.geom.</em>;
public class PainelMotor extends JFrame
{
private Teste2D Motor2D = new Teste2D();
private JButton b = new JButton(“Teste”);
private Container c = getContentPane();
private JPanel p = new JPanel(new BorderLayout());
public PainelMotor()
{
super("TesteDePainel");
p.add(b, BorderLayout.NORTH);
p.add(Motor2D);
c.add(p);
setSize(500,500);
show();
}
public static void main( String args[] ) {
PainelMotor a = new PainelMotor();
a.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
System.exit( 0 );
}
}
);
}
}