Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher
description
Transcript of Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher
![Page 1: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/1.jpg)
Human Computer InteractionJAVA APPLETS
JAVA AWT
Μελισσόβας ΔημήτρηςOwda Zaher
![Page 2: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/2.jpg)
Περιορισμοί ασφάλειαςΤα applets δε μπορούν:
• Να διαβάσουν από τον τοπικό δίσκο του client– Μπορούν να παρουσιάσουν σελίδες διαθέσιμες στο
Web
• Να γράψουν στον τοπικό δίσκο του client– Ο browser μπορεί να αποφασίσει κάνει cache κάποια
αρχεία σχετιζόμενα με τα applets. Δεν είναι στην δικαιοδοσία του applet να αποφασίσει ποια.
• Να ανοίξουν άλλα connections, περα από από τον webserver– Περιορίζει τα applets να βλέπουν αρχεία πίσω από
network firewalls
![Page 3: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/3.jpg)
Δε μπορούν:
• Να εκτελέσουν προγράμματα στο μηχάνημα του χρήστη– Η Java έχει τη δυνατότητα να εκτελέσει τοπικά
εγκατεστημένα προγράμματα.– Αυτό δεν επιτρέπεται στα applets για λόγους
ασφαλείας• Να ανακαλύψουν προσωπικά δεδομένα του
χρήστη– Τα ευαίσθητα στοιχεία του χρήστη, όπως το
username ή στοιχεία για το σύστημα (πχ filesystem ktlp)
– Μπορούν ωστόσο να μάθουν το όνομα του host από το οποίο τρέχουν (αυτό το ξέρει ήδη ο HTTP server)
![Page 4: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/4.jpg)
Applet TemplateImport java.applet.Applet;Import java.awt.*;
Public class AppletTemplate extends Applet {// Variable declarations
Public void init() {// Variable initialisations, image loading, etc.
}
Public void paint(Graphics g) {// Drawing operations
}}
![Page 5: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/5.jpg)
HTML Template<HTML><HEAD><TITLE> A Template for Loading Applets</TITLE></HEAD>
<BODY><H1>Hello World!</H1><P><APPLET CODE=“ApplectTemplate.class” WIDTH=120 HEIGHT=60><B>Error!</B></APPLET></BODY></HTML>
![Page 6: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/6.jpg)
Παράδειγμα: AppletImport java.applet.Applet;Import java.awt.*;
Public class MyTest extends Applet {private Image My_Image;
Public void init() { // constructorsetBackground(Color.white);setFont(new Font(“Arial”, Font.BOLD, 14));My_Image = getImage(getDoccumentBase(), “pictures/test.gif”);add(new Label(“Test!”));
}
Public void paint(Graphics g) { //drawingg.drawImage(My_Image, 0, 50, this);
}}
![Page 7: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/7.jpg)
Κάλεσμα <HTML><HEAD><TITLE> My Test!</TITLE></HEAD>
<BODY><H1>My Image</H1><P><APPLET CODE=“MyTest.class” WIDTH=120 HEIGHT=60>
<B>Error!</B></APPLET></BODY></HTML>
![Page 8: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/8.jpg)
Ο κύκλος ζωής ενός Applet…
• Public void init() – Καλείται μονάχα την πρώτη φορά που φορτώνεται το applet
στον browser– Όχι κάθε φορά που εκτελείται αυτό
• Public void start()– Καλείται αρχικά αμέσως μετά την init()– Ξανακαλείται κάθε φορά που ο χρήστης επιστρέφει στην σελίδα– Χρησιμοποιείται για να εκκινεί animations
• Public void paint(Graphics g)– Καλείται αμέσως μετά από την start()– Ξανακαλείται όταν ο browser ξανασχεδιάζει την εικόνα. Συνήθως
όταν καλύπτεται ένα μικρό μέρος και επανεμφανίζεται
![Page 9: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/9.jpg)
Ο κύκλος ζωής ενός Applet… (Συνέχεια)
• Public void stop()– Κάθε φορά που ο user φεύγει από την σελίδα– Χρήσιμο για να σταματάει τα animations
• Public void destroy()– Όταν κλείνει το applet
![Page 10: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/10.jpg)
Χρήσιμες συναρτήσεις
• getCodeBase, getDocumentBase– Επιστρέφουν τα URL του
• Applet file – getCodeBase()• HTML file – getDocumentBase()
• getSize– Επιστρέφει τις διαστάσεις του applet (width, length)
• getGraphics– Επιστρέφει το Graphics object για το applet– Το Graphics διαγράφεται μεταξύ διαδοχικών paint()
![Page 11: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/11.jpg)
Χρήσιμες συναρτήσεις (Συνέχεια)
• showDocument (ApplectContext method)getAppletContext().showDocument(…)
– Ζητάει από τον browser να παρουσιάσει μία Web page
– Μπορεί να είναι και FRAME
• showStatus– Εμφανίζει ένα string στο status line του browser
• getCursor, setCursor– Ορίζει τον τύπο του κέρσορα για το ποντίκι. Πχ:
CROSSHAIR_CURSOR, HAND_CURSOR, WAIT_CURSOR
![Page 12: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/12.jpg)
Χρήσιμες συναρτήσεις (Συνέχεια) !
• getAudioClip, play– Παίζει ένα αρχείο ήχου, από μια
απομακρυσμένη τοποθεσία
• getBackground, setBackground– Ρυθμίζει το χρώμα του background για το
applet
• getForeground, setForeground– Ρυθμίζει το τρέχον χρώμα της σχεδίασης
![Page 13: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/13.jpg)
Embedding σε HTML
<APPLET CODE=“…” WIDTH=xxx HEIGHT=xxx …>…</APPLET>• Απαραίτητα δεδομένα
– CODE• Ρυθμίζει το filename του αρχείου Java class, ώστε αυτό να
φορτωθεί• Σχετικό path, με βάση το τρέχον HTML file, εκτός άμα οριστεί η
παράμετρος CODEBASE κατάλληλα
– WIDTH και HEIGHT• Ορίζει τις διαστάσεις του applet• Οι τιμές μπορεί να οριστούν τόσο σε pixels όσο και σε ποσοστό του
browser window
![Page 14: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/14.jpg)
Embedding σε HTML (Συνέχεια)
• Άλλοι παράμετροι– ALIGN HSPACE και VSPACE
• Ελέγχει την τοποθέτηση και τα borders. Παρόμοιο με το IMG της HTML
– ARCHIVE• Ορίζει JAR file (zip file με .jar extention) το οποίο περιέχει
όλες τις κλάσεις και εικόνες που χρησιμοποιούνται από τα applets
• Η συμπίεση εξοικονομεί πάρα πολύ χρόνο, ειδικότερα σε περίπτωση αρκετών αρχείων
– ΝΑΜΕ• Δίνει όνομα στο applet
![Page 15: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/15.jpg)
Καθορισμός παραμέτρων<H1> Customizable ‘ello World applet</H1>
<APPLET CODE=“Hello.class” WIDTH=400 HEIGHT=40><PARAM NAME=“BACKGROUND” VALUE=“LIGHT”><B> Error! </B></APPLET>
<APPLET CODE=“Hello.class” WIDTH=400 HEIGHT=40><PARAM NAME=“BACKGROUND” VALUE=“DARK”><B> Error! </B></APPLET>
<APPLET CODE=“Hello.class” WIDTH=400 HEIGHT=40><B> Error! </B></APPLET>
![Page 16: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/16.jpg)
Διάβασμα παραμέτρων• Χρήση της getParameter(name)• name: case sensitive
Public void init() {Color backgrround = Color.gray;Color foreground = Color.darkGray;String backgroundType = getParameter(“BACKGROUND”);If (backgroundType != null) {If (backgroundType.equalsIgnoreCase(“LIGHT”)) {
Background = Color.white;Foreground = Color.black;
} else if (backgroundType.equalsIgnoreCase(“DARK”)) {background = Color.black;foreground = Color.white;
}}…}
![Page 17: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/17.jpg)
Διάβασμα παραμέτρων (Αποτέλεσμα)
![Page 18: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/18.jpg)
Μέθοδοι Graphics
• drawString(string, left, bottom)– Ζωγραφίζει το string, στην τοποθεσία left,
bottom
• drawRect(left, top, width, height)– ‘Άδειο’ ορθογώνιο
• fillRect(left, top, width, height)– ‘Γεμάτο’ ορθογώνιο
• drawLine(x1, y1, y2, y2)– Γραμμή
![Page 19: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/19.jpg)
Μέθοδοι Graphics
• drawOval, fillOval– Σχεδιάζει ένα οβάλ σχήμα. Τα arguments καθορίζουν
τα ορθογώνια borders
• drawPolygon, fillPolygon– Τα points αποθηκεύονται σε array ή στην Polygon
class.– By default κλειστή πολυγωνική γραμμή. Εναλακτικά
drawPolyline
• drawImage– Φορτώνει μία εικόνα– Υποστηρίζει JPG ή GIF format
![Page 20: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/20.jpg)
Drawing Color
• setColor, getColor– Καθορίζει το foreground color (χρώμα
σχεδίασης)– Default: το foreground color του παραθύρου– Υπάρχουν προκαθορισμένα χρώματα
(Color.red, Color.yellow κτλπ), ή new Color(r, g, b)
![Page 21: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/21.jpg)
Graphics Font
• setFont, getFont– Καθορισμός του font για strings
![Page 22: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/22.jpg)
Άλλα modes
• setXORMode– Χρήσιμο για selections
• setPaintMode– Επιστροφή στο κανονικό mode
![Page 23: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/23.jpg)
Παράθυρα
• Containers– Τα περισσότερα παράθυρα θεωρούνται Containers.
Μπορούν να κρατάνε αλλα παράυθρα ή GUI components. Δεν ισχύει για Canvas
• Layout Managers– Για να ρυθμίζουν μεγέθη και θέσεις components
πάνω στα παράθυρα
• Events– Για input (mouse, keyboard etc)
![Page 24: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/24.jpg)
Παράθυρα (Συνέχεια)
• Σχεδιασμός– Subclass με δικιά της paint method
• Popup Windows– (Frame και Dialog) έχουν δικιά τους μπάρα– (Canvas και Panel) πρέπει να γίνουν embed
![Page 25: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/25.jpg)
Components
• Χρήσιμες συναρτήσεις– getBackground/setBackground ..– Paint– setVisible (true, false)– List– getParent– …
![Page 26: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/26.jpg)
ΠαράδειγμαImport java.applets.Applet;Import java.awt.*
Public class ButtonTest extends Applet {public void init() {
String[] labelPrefixes = { “Start”, “Stop”, “Pause”, “Resume” };
For (int = 0; I < 4; i++) {add(new Button(labelPrefixes[i] + “ Thread 1));
}}}
![Page 27: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/27.jpg)
Παράδειγμα 2 (Confirmation Dialog)
Class Confirm extends Dialog implements ActionListener {Private Button yes, no;
Public Confirm(Frame parent) {super(parent, “Confirmation”, true);
setLayout(new FlowLayout());add(new Label(“Really quit?”)); yes = new Button(“Yes”); yes.addActionListener(this); no = new Button(“No”); no.addActionListener(this); add(yes); add(no); pack(); setVisible(true);}
![Page 28: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/28.jpg)
Συνέχεια
Public void actionPerformed(ActionEvent event) {
if (event.getSource() == yes) {
System.exit(0);
} else {
dispose();
}
}
}
![Page 29: Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher](https://reader036.fdocument.pub/reader036/viewer/2022062423/5681472c550346895db46779/html5/thumbnails/29.jpg)
Χρησιμοποίηση του DialogPublic class ConfirmTest extends Frame {
public static void main(String[] args) {new ConfirmTest();
}public ConfirmTest() {
super(“Confirming QUIT”);setSize(200, 200);addWindowListener(new ConfirmListener());setVisible(true);
}public ConfirmTest(String title) {
super(title);}
private class ConfirmListener extends WindowAdapter {public void windowClosing(WindowEvent event) {
new Confirm(ConfirmText.this);}
}}