public class Thread 91 extends Thread int n
public class Thread 91 extends Thread { int n, s; House mh; Thread 91(int n, int s, House m) { this. n = n; this. s = s; this. mh = m; } public void run() { mh. polygon(n, s); mh. house(s); } public static void main(String[] args) { Turtle. Frame f = new Turtle. Frame(); House m = new House(); f. add(m); Thread 91 t 1 = new Thread 91(3, 50, m); Thread 91 t 2 = new Thread 91(5, 40, m); t 1. start(); t 2. start(); System. out. println("Main method finished. "); } }
スレッドの生成と実行 • 生成 Thread 91 t 1 = new Thread 91(3, 50, m); • 実行 t 1. start(); ↓ public void run() { mh. polygon(n, s); mh. house(s); }
House m 1 = new House(); House m 2 = new House(); f. add(m 1); f. add(m 2); Thread 91 t 1 = new Thread 91(3, 50, m 1); Thread 91 t 2 = new Thread 91(5, 40, m 2); t 1. start(); t 2. start();
public class Simple. Animation extends JPanel implements Runnable { public Simple. Animation() {. . . } public synchronized void start. Animation() { //アニメーションを開始 if (animator. Thread == null) { animator. Thread = new Thread(this); } animator. Thread. start(); } public synchronized void stop. Animation() { if (animator. Thread != null) {//アニメーションスレッドを止める animator. Thread = null; } } public void run() {. . . } public static void main(String[] args) { JFrame f = new JFrame("Simple Animation"); Simple. Animation anime = new Simple. Animation(); f. get. Content. Pane(). add(anime, Border. Layout. CENTER); f. set. Size(new Dimension(100, 100)); f. set. Visible(true); } }
public class Hello. Applet extends JApplet implements Action. Listener { JLabel label; //ラベル用の変数 JButton b 1, b 2; //ボタン用の変数 public void init(){ label = new JLabel(" "); //JLabelオブジェクトの生成 b 1 = new JButton("ごあいさつ"); //JButtonオブジェクトの生成 b 2 = new JButton("消去"); //JButtonオブジェクトの生成 b 1. add. Action. Listener(this); //イベントリスナーを設定 b 2. add. Action. Listener(this); //イベントリスナーを設定 Container c = get. Content. Pane(); //フレームの内容表示域を得る c. add(label, Border. Layout. NORTH); //ラベルを置く c. add(b 1, Border. Layout. CENTER); //ボタンを置く c. add(b 2, Border. Layout. EAST); //ボタンを置く } public void action. Performed(Action. Event e){ Object obj = e. get. Source(); if(obj == b 1){ //b 1が押されたら label. set. Text("こんにちは"); //labelに文字列を設定 } else if(obj == b 2){ //b 2が押されたら label. set. Text(" "); //labelの文字列を消す } } }
Dijkstra. Applet • 登録 Graph. Panel example = new Graph. Panel(); example. add. Mouse. Listener(example);
public void mouse. Clicked(Mouse. Event e) { int X = e. get. X(); int Y = e. get. Y(); int k = 0; double d = 1000000. 0; for (int i = 0; i < n; i++) { double dd = Math. sqrt((x[i]-X)*(x[i]-X) + (y[i]-Y)*(y[i]-Y)); if (dd < d) { k = i; d = dd; } } if (e. get. Button() == Mouse. Event. BUTTON 1 && e. is. Shift. Down() == false) { start = k; label. set. Text("start="+start+" goal="+goal); . . . } else { goal = k; label. set. Text("start="+start+" goal="+goal); . . . } repaint(); }
- Slides: 22