![]() Ласло Краус |
Програмирање на језику Java - колоквијуми Други колоквијум 24. 1. 2008 |
---|
Саставити на језику Java следећи пакет класа:
Label
) који на жутој подлози приказује једну црвену децималну цифру која представља тренутни положај точка. Може да се постави да приказ буде празан. Точак може да се заврти на једну или другу страну када се цифре мењају циклички по растућем или опадајућем редоследу уз приказивање тренутне цифре. Време између две промене цифре и смер кретања се задаје приликом стварања точка. Захтев за дохватање тренутне (случајне) цифре зауставља кретање точка. Рад точка може и дефинитивно да се прекине.
Panel
) која садржи задати број точкова. Цифре на појединим точковима се мењају у случајним временским интервалима између 50 и 200 ms. Сваки други точак се врти на једну, а остали на супротну страну. Може да се заврти неколико задњих точкова у машини, да се точкови зауставе и да се машина уништи. Приказ некоришћених точкова је празан. При заустављању добија се низ тренутних цифара на активним точковима у текстуалном облику. Покретање машине у покрету и заустављање машине која стоји нема никаквог ефекта.
ispitx
(x
је број радне станице за којим се ради). Лозинка на свакој радној станици је student
.N:
(Nastava
on
\\Xs200-2
) у каталогу ObjektnoProg\RSx
(x
је број радне станице за којим се ради).// Tocak.java package lutrija; import java.awt.*; class Tocak extends Label implements Runnable { private int cifra; private int dt; private int korak; private Thread nit = new Thread (this); private boolean radi = false; Tocak (int ddt, boolean raste) { dt = ddt; korak = raste ? 1 : -1; setFont (new Font(null,Font.BOLD,24)); setBackground (Color.YELLOW); setForeground (Color.RED); setAlignment (CENTER); brisi (); nit.start (); } public void run () { try { while (! nit.interrupted ()) { if (! radi) synchronized (this) { wait(); } cifra = (cifra + korak + 10) % 10; setText (Integer.toString (cifra)); nit.sleep (dt); } } catch (InterruptedException g) {} } public void brisi () { setText (" "); } synchronized void kreni () { radi = true; notify (); } public int cifra () { radi = false; return cifra; } void zavrsi () { nit.interrupt (); } } // Masina.java package lutrija; import java.awt.*; public class Masina extends Panel { private Tocak[] niz; private int n; private boolean radi = false; public Masina (int kap) { niz = new Tocak [kap]; for (int i=0; i<kap; i++) add (niz[kap-i-1] = new Tocak((int)(50+Math.random()*150), i%2==0)); } public void kreni (int n) { if (!radi) { if (n<=0 || n>niz.length) n = niz.length; for (Tocak t: niz) t.brisi (); radi = true; this.n = n; for (int i=0; i<n; i++) { niz[i].kreni(); } } } public String stani () { radi = false; String s = ""; for (int i=0; i<n; s = niz[i++].cifra()+s); return s; } public void unisti () { for (Tocak t: niz) t.zavrsi (); } } // Izvlacenje.java package lutrija; import java.awt.*; import java.awt.event.*; public class Izvlacenje extends Frame { private static final int DUZ = 6; Masina masina = new Masina (DUZ); Button dgmKreni, dgmStani; CheckboxGroup grupa = new CheckboxGroup (); TextArea tksBrojevi; private void mozeKreni (boolean da) { dgmKreni.setEnabled ( da); dgmStani.setEnabled (!da); } Panel ploKomande () { Panel plo = new Panel (); plo.add (dgmKreni = new Button ("Kreni")); dgmKreni.addActionListener ( new ActionListener () { public void actionPerformed (ActionEvent d) { mozeKreni (false); masina.kreni (Integer.parseInt(grupa.getSelectedCheckbox().getLabel())); } }); plo.add (dgmStani = new Button ("Stani")); dgmStani.addActionListener ( new ActionListener () { public void actionPerformed (ActionEvent d) { mozeKreni (true); tksBrojevi.append (masina.stani() + '\n'); } }); mozeKreni (true); return plo; } Panel ploCifre () { Panel plo = new Panel (); for (int i=DUZ; i>0; i--) plo.add (new Checkbox(i+"", grupa, i==0)); return plo; } Panel ploBrojevi () { Panel plo = new Panel (new BorderLayout ()); plo.add(tksBrojevi=new TextArea(1,7),"Center"); Button dgm = new Button ("Isprazni"); plo.add (dgm, "South"); dgm.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent d) { tksBrojevi.setText (""); } }); return plo; } private void popuniProzor () { add (ploBrojevi(), "East"); Panel ploca = new Panel (new BorderLayout ()); add (ploca, "Center"); ploca.add (masina, "North"); Panel plo = new Panel (new GridLayout(2,1)); ploca.add (plo, "South"); plo.add (ploCifre ()); plo.add (ploKomande ()); } public Izvlacenje () { super ("Izvlacenje"); setSize (300, 180); setResizable (false); popuniProzor (); setVisible (true); addWindowListener (new WindowAdapter () { public void windowClosing (WindowEvent d) { masina.unisti (); dispose (); } }); } public static void main (String[] varg) { new Izvlacenje (); } }(садржај)
Copyright © 2010, Laslo Kraus
Последња ревизија: 8.9.2010.