![]() Ласло Краус |
Програмирање на језику Java - колоквијуми Други колоквијум Прва група 29. 1. 2006 |
|---|
Саставити на језику Java следећи пакет класа:
Graphics getGraphics(). Координате тачке (x,y) се у физичке координате (g,h) на графичкој компоненти пресликавају помоћу g = s (x−xmin) / (xmax−xmin) и h = v (ymax−y) / (ymax−ymin), где су s и v ширина и висина компоненте.

studentx (x је број радне станице за којим се ради). Лозинка на свакој радној станици је student.N: (Nastava on \\Xs200-2) у каталогу ObjektnoProg\RSx (x је број радне станице за којим се ради).
// Kriva.java
package grafika;
public interface Kriva {
double x (double p);
double y (double p);
}
// Spirala.java
package grafika;
public class Spirala implements Kriva {
private double a;
public Spirala (double aa) { a = aa; }
public Spirala () { a = 1; }
public double x (double p) { return a * p * Math.cos (p); }
public double y (double p) { return a * p * Math.sin (p); }
}
// Cvet.java
package grafika;
public class Cvet implements Kriva {
private double a;
private int n;
public Cvet (double aa, int nn) { a=aa; n=nn; }
public Cvet () { a = 5; n = 7; }
public double x (double p) { return a * (1+Math.sin(n*p)) * Math.cos(p); }
public double y (double p) { return a * (1+Math.sin(n*p)) * Math.sin(p); }
}
// Grafika.java
package grafika;
import java.awt.*;
import java.awt.event.*;
import grafika.*;
public class Grafika extends Frame {
private Kriva kriva = new Spirala ();
private Thread nit;
private TextField tksPmax = new TextField ("10", 4),
tksDp = new TextField (".1", 4),
tksDt = new TextField ("100", 4),
tksA = new TextField ("1", 4),
tksN = new TextField ("6", 4);
private Checkbox rdgSpirala, rdgCvet;
private class Platno extends Canvas implements Runnable {
public void paint (Graphics g) {
if (nit != null) nit.interrupt ();
(nit = new Thread (this)).start ();
}
public void run () {
Graphics g = getGraphics ();
g.setColor (Color.BLACK);
double pmax=Double.parseDouble(tksPmax.getText()),
dp =Double.parseDouble(tksDp .getText());
int dt=Integer.parseInt (tksDt .getText());
int sir = getWidth(), vis = getHeight ();
int x0 = (int)((kriva.x(0) + 10) / 20 * sir),
y0 = (int)((10 - kriva.y(0)) / 20 * vis);
if (rdgSpirala.getState()) {
kriva = new Spirala ( Double.parseDouble(tksA.getText()));
} else if (rdgCvet.getState ()) {
kriva = new Cvet ( Double .parseDouble(tksA.getText()),
Integer.parseInt (tksN.getText())
);
}
try {
for (double p=0; p<=pmax && !nit.interrupted(); p+=dp) {
int x = (int)((kriva.x(p)+10)/20*sir),
y = (int)((10-kriva.y(p))/20*vis);
g.drawLine (x0, y0, x, y);
x0 = x; y0 = y;
nit.sleep (dt);
}
} catch (InterruptedException gr) {}
nit = null;
}
} // class Platno
private Platno platno = new Platno ();
private Grafika () {
super ("Grafika");
setBounds (100, 100, 400,300);
addWindowListener (new WindowAdapter () {
public void windowClosing (WindowEvent d) {
if (nit != null) nit.interrupt ();
dispose ();
}
});
add (platno, "Center");
platno.setBackground (new Color(240,240,240));
Panel ploca = new Panel (new GridLayout (0,1));
add (ploca, "South");
Panel plo = new Panel ();
ploca.add (plo);
plo.add (new Label ("pmax:", Label.RIGHT));
plo.add (tksPmax);
plo.add (new Label ("dp:", Label.RIGHT));
plo.add (tksDp);
plo.add (new Label ("dt:", Label.RIGHT));
plo.add (tksDt);
ploca.add (plo = new Panel());
CheckboxGroup grp = new CheckboxGroup ();
plo.add (rdgSpirala = new Checkbox ("Spirala", grp, true));
plo.add (rdgCvet = new Checkbox ("Cvet", grp, false));
plo.add (new Label ("a:", Label.RIGHT));
plo.add (tksA);
plo.add (new Label ("n:", Label.RIGHT));
plo.add (tksN);
ploca.add (plo = new Panel());
Button dgm = new Button ("Crtaj");
plo.add (dgm);
dgm.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent d) { platno.repaint (); }
});
plo.add(dgm = new Button ("Prekini"));
dgm.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent d) { if (nit != null) nit.interrupt (); }
});
setVisible (true);
} // Grafika()
public static void main (String[] varg) {
new Grafika ();
}
}
(садржај)
Copyright © 2010, Laslo Kraus
Последња ревизија: 8.9.2010.