للبنات اللي بيغون الكود الصحيح هنا .... بس اتمنى تاخذوا الفكره ماله داعي الكبي بيست :)
كود PHP:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.lang.Object;
public class Spirograph extends JPanel implements ActionListener
{
JLabel label;
JLabel r1;
JLabel r2;
JLabel pin;
JButton d;
// JPanel panel;
// JPanel panel2;
JTextField t1;
JTextField t2;
JTextField p;
BorderLayout borderLayout;
int num1=0;
int num2=0;
int num3=0;
//...........Construcot................
public Spirograph()
{ //........Spirograph label......
label= new JLabel("Spirograph");
label.setHorizontalAlignment(JLabel.CENTER);
label.setLayout(new FlowLayout());
add(label);
//........r1,r2,p label..................
r1=new JLabel("raduis 1:");
t1 =new JTextField(5);
t1.setActionCommand("text1");
t1.addActionListener(this);
add(r1);
add(t1);
r2=new JLabel("raduis 2:");
t2 =new JTextField(5);
t2.setActionCommand("text2");
t2.addActionListener(this);
add(r2);
add(t2);
pin=new JLabel("P_Position:");
p =new JTextField(5);
p.setActionCommand("pin");
p.addActionListener(this);
add(pin);
add(p);
//.............Draw Button............
d = new JButton("Draw !!");
d.setActionCommand("d");
d.addActionListener(this);
add(d);
add(label);
setPreferredSize(new Dimension(400, 400));
setBackground(Color.white);
} //end of Constructor.....
//Message handlers - don't worry too much at this stage.
public void actionPerformed(ActionEvent e)
{
if ((e.getActionCommand()).equals("d"))
{
if(!t1.getText().equals(""))
num1=Integer.valueOf(t1.getText());
if(!t2.getText().equals(""))
num2=Integer.valueOf(t2.getText());
if(!p.getText().equals(""))
num3=Integer.valueOf(p.getText());
JPanel panel2=new SpiroPanel(num1,num2,num3);
add(panel2);
label.setText("---");
// repaint();
}}
public static void main(String[]args)
{
JFrame frame= new JFrame();
frame.setTitle("draw Spirograph" );
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// frame.setLayout(null);
Spirograph panel =new Spirograph();
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
//.......................
//....................SpiroPanel..................
class SpiroPanel extends JPanel {
int nump=10000;
double x;
double r1;
double r2;
//.........Constructor.......................
public SpiroPanel(int num1,int num2,int num3) {
// setPreferredSize(new Dimension(400,400));
// setBackground(Color.white);
r1=num1;
r2=num2;
x=num3;
setPreferredSize(new Dimension(400,400));
setBackground(Color.white);
}
//..........PaintComponent..................
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.translate(200,200);
int x1=(int)(r1+r2-x);
int y1=0;
int x2,y2;
for(int i=0;i<nump;i++)
{double s=i*Math.PI/90;
x2=(int)((r1+r2)*Math.cos(s)-x*Math.cos((r1+r2)*s/r2));
y2=(int)((r1+r2)*Math.sin(s)-x*Math.sin((r1+r2)*s/r2));
g2.drawLine(x1,y1,x2,y2);
x1=x2;
y1=y2;
}
}
}