![]() Ласло Краус |
Програмирање на језику 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.