java applets for experiments

49
Java Applets for Experiments NSF Workshop, UC- Fullerton Gary McClelland 17-20 January 2002

Upload: regis

Post on 14-Jan-2016

47 views

Category:

Documents


2 download

DESCRIPTION

Java Applets for Experiments. NSF Workshop, UC-Fullerton Gary McClelland 17-20 January 2002. Java Workshop Outline. Java, what it is and isn’t Object-Oriented Programming (OOP) First applet: HelloWorld Graphics drawing Listening for events mouse, keys, Buttons, Scrollbars. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Java Applets for Experiments

Java Applets for Experiments

NSF Workshop, UC-FullertonGary McClelland

17-20 January 2002

Page 2: Java Applets for Experiments

Java Workshop Outline

Java, what it is and isn’tObject-Oriented Programming (OOP)First applet: HelloWorldGraphics drawingListening for events

mouse, keys, Buttons, Scrollbars

Page 3: Java Applets for Experiments

Java ≠ JavascriptJavascript

HTML scripting languageFormsInterpreted

JavaApplets embedded in HTML pageStandalone applicationsComplete programming languageCompiled

Page 4: Java Applets for Experiments

Java’s Goods & Bads

StrengthsGraphicsInteractivity (mouse, keys, scrollbars)Precise control

WeaknessesTiming at the ms levelLearning curve

Page 5: Java Applets for Experiments

History of an Applet

Edit java source code & htmlnotepad Hello.javanotepad Hello.html

Compile source to ByteCodesjavac Hello.javaproduces Hello.class

View applet (Java Virtual Machine)appletviewer Hello.htmlbrowser Hello.html

Page 6: Java Applets for Experiments

<html><body>

<applet code=“Hello.class”width=“300” height=“300”>

</applet>

</body></html>

Page 7: Java Applets for Experiments

Object-Oriented Programming (OOP)

ObjectsState VariablesBehavior Methods

BicycleState: cadence, gear, speedBehavior: brake, accelerate,

changeGear

Page 8: Java Applets for Experiments

Java class: object blueprint

Class variablesConstructor (object “factory”)Methods (subroutine definitions)

Page 9: Java Applets for Experiments

Inheritance

Mountain Bike Racing Bike

Mtn Tandem Road Tandem

Tandem

Bicycle

Page 10: Java Applets for Experiments

public class bicycle extends Object {Gear front;Gear rear;Pedal ped;

public bicycle(Color col, int size, int frontTeeth,int rearTeeth) { //blueprint for bicycle goes here front = new Gear(frontTeeth); rear = new Gear(rearTeeth);}

public void changeGears(String dir) {//method, details next screen

}}

Page 11: Java Applets for Experiments

public void changeGears(String dir) { if(dir==“lower”) { if(rear.hasLower())

rear.lower(); else if(front.hasLower())

front.lower(); else

print(“suck it up!”); } else //similar for higher}

Page 12: Java Applets for Experiments

public class Pedal extends Object {private int currentCadence; //rpm

public Pedal() {currentCadence = 0;

}

public void setCadence(int c){currentCadence = c;

}

public void changeCadence(int c){currentCadence =

currentCadence + c;}

public int getCadence() {return currentCadence;

}}

Page 13: Java Applets for Experiments

public class Pedal extends Object {private int currentCadence; //rpm

public Pedal() {currentCadence = 0;

}

public void setCadence(int c){currentCadence = c;

}

public void changeCadence(int c){currentCadence =

currentCadence + c;}

public int getCadence() {return currentCadence;

}}

Page 14: Java Applets for Experiments

public class Pedal extends Object { private int currentCadence; //rpm

public Pedal() {currentCadence = 0;

}

public void setCadence(int c){currentCadence = c;

}

public void changeCadence(int c){currentCadence =

currentCadence + c;}

public int getCadence() {return currentCadence;

}}

Page 15: Java Applets for Experiments

public class Pedal extends Object {private int currentCadence; //rpm

public Pedal() {currentCadence = 0;

}

public void setCadence(int c){currentCadence = c;

}

public void changeCadence(int c){currentCadence =

currentCadence + c;}

public int getCadence() {return currentCadence;

}}

Page 16: Java Applets for Experiments

public class Pedal extends Object {private int currentCadence; //rpm

public Pedal() {currentCadence = 0;

}public void setCadence(int c){

currentCadence = c;}

public void changeCadence(int c){currentCadence =

currentCadence + c;}

public int getCadence() {return currentCadence;

}}

Page 17: Java Applets for Experiments

Card Constructor

Card(String s1, Color c1, String s2, Color c2, int fontSize)s1: text on “front” of cardc1: color on “front” of cards2: text on “reverse” of card after clickc2: color on “reverse” of card after clickfontSize: size of font for both Strings

Page 18: Java Applets for Experiments

Card ObjectAs Loaded After Click

add(new Card(“front”,Color.blue,“reverse”, Color.red, 14));

Page 19: Java Applets for Experiments

Using Card in Wason Task

public void init() { setLayout(new GridLayout(1,4,20,0)); add(new Card("E",Color.white,"E",Color.yellow,24)); add(new Card("K",Color.white,"K",Color.yellow,24)); add(new Card("4",Color.white,"4",Color.yellow,24)); add(new Card("5",Color.white,"5",Color.yellow,24)); repaint();}

Page 20: Java Applets for Experiments

Wason Task with Feedback

public void init() { setLayout(new GridLayout(1,4,20,0)); add(new Card("E",Color.white,"E",Color.green,24)); add(new Card("K",Color.white,"K",Color.red,24)); add(new Card("4",Color.white,"4",Color.red,24)); add(new Card("5",Color.white,"5",Color.green,24)); repaint();}

Page 21: Java Applets for Experiments

Diagnosis Task with 400 Cards

Page 22: Java Applets for Experiments

Diagnosis Task after Sampling

Page 23: Java Applets for Experiments

Diagnosis Codepublic void init() { int rows = 20; int cols = 20; int n = rows * cols; int pos = (38*n)/100; //38% of tests are positive int neg = n - pos; setLayout(new GridLayout(rows,cols,5,5)); int cpos = (80*pos)/100; //80% of pos are true pos int cneg = pos - cpos; for(int i=1; i<=pos; i++) { if(Math.random() < (double)cpos/(double)(cpos+cneg)) { add(new Card("M+",Color.yellow,"C+",Color.red,12)); cpos = cpos - 1; }

else { add(new Card("M+",Color.yellow,"C-",Color.green,12)); cneg = cneg - 1; } }

Page 24: Java Applets for Experiments

Diagnosis Code, Part 2 cpos = (20*pos)/100; //20% of negs are false pos cneg = neg - cpos;

for(int i=pos+1; i<=n; i++) { if(Math.random() < (double)cpos/(double)(cpos+cneg)) { add(new Card("M-",Color.white,"C+",Color.red,12)); cpos = cpos - 1; } else { add(new Card("M-",Color.white,"C-",Color.green,12)); cneg = cneg - 1; } } repaint();

}

Page 25: Java Applets for Experiments

Your Turn!

You first applet“Hello World”

Page 26: Java Applets for Experiments

History of an Applet

Edit java source code & htmlnotepad Hello.javanotepad Hello.html

Compile source to ByteCodesjavac Hello.javaproduces Hello.class

View applet (Java Virtual Machine)appletviewer Hello.htmlbrowser Hello.html

Page 27: Java Applets for Experiments

<html><body>

<applet code=“Hello.class”width=“300” height=“300”>

</applet>

</body></html>

Page 28: Java Applets for Experiments

<html><body>

<applet code=“Hello.class”width=“300” height=“300”>

</applet>

</body></html>

Save as Hello.html

Page 29: Java Applets for Experiments

import java.applet.Applet;Import java.awt.*;

public class Hello extends Applet {

public void init() { repaint(); }

public void paint(Graphics g) { g.drawString(“Hello World!”,30,30); }

}

Page 30: Java Applets for Experiments

import java.applet.Applet;Import java.awt.*;

public class Hello extends Applet {

public void init() { repaint(); }

public void paint(Graphics g) { g.drawString(“Hello World!”,30,30); }

} Save as Hello.java

Page 31: Java Applets for Experiments

History of an Applet

Edit java source code & htmlnotepad Hello.javanotepad Hello.html

Compile source to ByteCodesjavac Hello.javaproduces Hello.class

View applet (Java Virtual Machine)appletviewer Hello.htmlbrowser Hello.html

Page 32: Java Applets for Experiments

History of an Applet

Edit java source code & htmlnotepad Hello.javanotepad Hello.html

Compile source to ByteCodesjavac Hello.javaproduces Hello.class

View applet (Java Virtual Machine)appletviewer Hello.htmlbrowser Hello.html

Page 33: Java Applets for Experiments

Graphics Object g

(0,0)

(x,y)

(width,height)

Page 34: Java Applets for Experiments

Graphics Methods: Size

getSize().width;int wd = getSize().width;

getSize().height;int ht = getSize().height;

g.drawRect(0,0,wd,ht);graws largest possible rectangle

g.drawString(“Center”,wd/2, ht/2);

Page 35: Java Applets for Experiments

Graphics Methods: Shapes

g.drawRect(x,y,w,h);g.fillRect(x,y,w,h);g.drawOval(x,y,w,h);g.fillOval(x,y,w,h);g.drawLine(x1,y1,x2,y2);

Page 36: Java Applets for Experiments

Graphics: More Shapes

g.drawPolygon(xPts,yPts,nPts);g.fillPolygon(xPts,yPts,nPts);g.drawArc(x,y,w,h,startAngle,endAngle

);g.fillArc(x,y,w,h,startAngle,endAngle);

Page 37: Java Applets for Experiments

Graphics Methods: Colors

g.setColor(Color.black);Color.red, Color.blue, Color.green,

Color.orange, Color.magenta, others…

g.setColor(new Color(r, g, b));0 ≤ r ≤ 2550 ≤ g ≤ 2550 ≤ b ≤ 255

setBackground(Color.yellow);

Page 38: Java Applets for Experiments

Graphics Methods: Fonts

g.setFont(new Font(font, style, size));Fonts: “Helvetica” “Courier” “Times”Style: Font.PLAIN, Font.BOLD,

Font.ITALICSize: any integer

g.drawString(string, x, y);

Page 39: Java Applets for Experiments

FontMetrics

FontMetrics fm;fm=getFontMetrics(getFont());int len = fm.stringWidth(“Center”);int fht = fm.getHeight();g.drawString(“Center”, wd/2-len/2,

ht/2+fht/2);

Page 40: Java Applets for Experiments

Arrays

int x[] = new int[3];Note: arrays start at 0Above creates x[0], x[1], x[2]

double y[] = new double[5];Card cards[][];

cards = new Card[20][10];cards[2][3] = new Card();

Page 41: Java Applets for Experiments

Control Structures

if (logical statement) {}else {}

for(int i=1; i<=n; i++) {}

Page 42: Java Applets for Experiments

Widgets

ButtonScrollbarTextFieldChoiceListMenuCheckbox

Page 43: Java Applets for Experiments

MouseListener

Object implements an interfacepublic class MouseDemo extends

Applet implements MouseListener {

Object registers to listen for eventsaddMouseListener(this);

Page 44: Java Applets for Experiments

MouseListener Methods

Object must have these methodspublic void mouseClicked(MouseEvent me)public void mousePressed(MouseEvent me)public void mouseReleased(MouseEvent

me)public void mouseEntered(MouseEvent me)public void mouseExited(MouseEvent me)

Page 45: Java Applets for Experiments

MouseEvent methods

getX()getY()getPoint()getWhen()

Page 46: Java Applets for Experiments

Saving Data via cgi

//send data to server//data saved locally in String dataString; public void recordData() {try { Socket t = new Socket("samiam.colorado.edu",80);

DataOutputStream out = new DataOutputStream(t.getOutputStream());

Page 47: Java Applets for Experiments

Constructing (Faking) POST

out.writeBytes( "POST "+ "http://www.myuni.edu/scripts/saveData.cgi" + " HTTP/1.0\r\n");out.writeBytes( "Content-type: application/octet-stream\r\n");out.writeBytes( "Content-length: " + dataString.length() + "\r\n\r\n");out.writeBytes(dataString);

Page 48: Java Applets for Experiments

Remainder of recordData()

t.close(); //close Socket to server

} catch(IOException e) {System.out.println("Error" + e); } } }

Page 49: Java Applets for Experiments

recordData() complete public void recordData() { //send data to server try { Socket t = new Socket(”www.myuni.edu",80); DataOutputStream out = new DataOutputStream(t.getOutputStream()); out.writeBytes( "POST "+ "http://www.myuni.edu/scripts/saveData.cgi"+ " HTTP/1.0\r\n"); out.writeBytes("Content-type: application/octet-stream\r\n"); out.writeBytes( "Content-length: " + dataString.length() + "\r\n\r\n"); out.writeBytes(dataString); t.close(); } catch(IOException e) {System.out.println("Error" + e); } } }