human computer interaction java applets java awt owda zaher n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher PowerPoint Presentation
Download Presentation
Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher

Loading in 2 Seconds...

play fullscreen
1 / 29

Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher - PowerPoint PPT Presentation


  • 111 Views
  • Uploaded on

Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher. Περιορισμοί ασφάλειας Τα applets δε μπορούν:. Να διαβάσουν από τον τοπικό δίσκο του client Μπορούν να παρουσιάσουν σελίδες διαθέσιμες στο Web Να γράψουν στον τοπικό δίσκο του client

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher' - aimon


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
human computer interaction java applets java awt owda zaher

Human Computer InteractionJAVA APPLETSJAVA AWTΜελισσόβας ΔημήτρηςOwda Zaher

applets
Περιορισμοί ασφάλειαςΤα applets δε μπορούν:
  • Να διαβάσουν από τον τοπικό δίσκο του client
    • Μπορούν να παρουσιάσουν σελίδες διαθέσιμες στο Web
  • Να γράψουν στον τοπικό δίσκο του client
    • Ο browser μπορεί να αποφασίσει κάνει cache κάποια αρχεία σχετιζόμενα με τα applets. Δεν είναι στην δικαιοδοσία του applet να αποφασίσει ποια.
  • Να ανοίξουν άλλα connections, περα από από τον webserver
    • Περιορίζει τα applets να βλέπουν αρχεία πίσω από network firewalls
slide3
Δε μπορούν:
  • Να εκτελέσουν προγράμματα στο μηχάνημα του χρήστη
    • Η Java έχει τη δυνατότητα να εκτελέσει τοπικά εγκατεστημένα προγράμματα.
    • Αυτό δεν επιτρέπεται στα applets για λόγους ασφαλείας
  • Να ανακαλύψουν προσωπικά δεδομένα του χρήστη
    • Τα ευαίσθητα στοιχεία του χρήστη, όπως το username ή στοιχεία για το σύστημα (πχ filesystem ktlp)
    • Μπορούν ωστόσο να μάθουν το όνομα του host από το οποίο τρέχουν (αυτό το ξέρει ήδη ο HTTP server)
applet template
Applet Template

Import 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

}

}

html template
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>

applet
Παράδειγμα: Applet

Import java.applet.Applet;

Import java.awt.*;

Public class MyTest extends Applet {

private Image My_Image;

Public void init() { // constructor

setBackground(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) { //drawing

g.drawImage(My_Image, 0, 50, this);

}

}

slide7
Κάλεσμα

<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>

applet1
Ο κύκλος ζωής ενός Applet…
  • Public void init()
    • Καλείται μονάχα την πρώτη φορά που φορτώνεται το applet στον browser
    • Όχι κάθε φορά που εκτελείται αυτό
  • Public void start()
    • Καλείται αρχικά αμέσως μετά την init()
    • Ξανακαλείται κάθε φορά που ο χρήστης επιστρέφει στην σελίδα
    • Χρησιμοποιείται για να εκκινεί animations
  • Public void paint(Graphics g)
    • Καλείται αμέσως μετά από την start()
    • Ξανακαλείται όταν ο browser ξανασχεδιάζει την εικόνα. Συνήθως όταν καλύπτεται ένα μικρό μέρος και επανεμφανίζεται
applet2
Ο κύκλος ζωής ενός Applet… (Συνέχεια)
  • Public void stop()
    • Κάθε φορά που ο user φεύγει από την σελίδα
    • Χρήσιμο για να σταματάει τα animations
  • Public void destroy()
    • Όταν κλείνει το applet
slide10
Χρήσιμες συναρτήσεις
  • getCodeBase, getDocumentBase
    • Επιστρέφουν τα URL του
      • Applet file – getCodeBase()
      • HTML file – getDocumentBase()
  • getSize
    • Επιστρέφει τις διαστάσεις του applet (width, length)
  • getGraphics
    • Επιστρέφει το Graphicsobject για το applet
    • Το Graphics διαγράφεται μεταξύ διαδοχικών paint()
slide11
Χρήσιμες συναρτήσεις (Συνέχεια)
  • showDocument (ApplectContext method)

getAppletContext().showDocument(…)

    • Ζητάει από τον browser να παρουσιάσει μία Web page
    • Μπορεί να είναι και FRAME
  • showStatus
    • Εμφανίζει ένα string στο status line του browser
  • getCursor, setCursor
    • Ορίζει τον τύπο του κέρσορα για το ποντίκι. Πχ:

CROSSHAIR_CURSOR, HAND_CURSOR, WAIT_CURSOR

slide12
Χρήσιμες συναρτήσεις (Συνέχεια) !
  • getAudioClip, play
    • Παίζει ένα αρχείο ήχου, από μια απομακρυσμένη τοποθεσία
  • getBackground, setBackground
    • Ρυθμίζει το χρώμα του background για το applet
  • getForeground, setForeground
    • Ρυθμίζει το τρέχον χρώμα της σχεδίασης
embedding html
Embedding σε HTML

<APPLET CODE=“…” WIDTH=xxx HEIGHT=xxx …>

</APPLET>

  • Απαραίτητα δεδομένα
    • CODE
      • Ρυθμίζει το filename του αρχείου Java class, ώστε αυτό να φορτωθεί
      • Σχετικό path, με βάση το τρέχον HTML file, εκτός άμα οριστεί η παράμετρος CODEBASE κατάλληλα
    • WIDTH και HEIGHT
      • Ορίζει τις διαστάσεις του applet
      • Οι τιμές μπορεί να οριστούν τόσο σε pixels όσο και σε ποσοστό του browser window
embedding html1
Embedding σε HTML (Συνέχεια)
  • Άλλοι παράμετροι
    • ALIGN HSPACE και VSPACE
      • Ελέγχει την τοποθέτηση και τα borders. Παρόμοιο με το IMG της HTML
    • ARCHIVE
      • Ορίζει JAR file (zip file με .jar extention) το οποίο περιέχει όλες τις κλάσεις και εικόνες που χρησιμοποιούνται από τα applets
      • Η συμπίεση εξοικονομεί πάρα πολύ χρόνο, ειδικότερα σε περίπτωση αρκετών αρχείων
    • ΝΑΜΕ
      • Δίνει όνομα στο applet
slide15
Καθορισμός παραμέτρων

<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>

slide16
Διάβασμα παραμέτρων
  • Χρήση της 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;

}

}

}

graphics
Μέθοδοι Graphics
  • drawString(string, left, bottom)
    • Ζωγραφίζει το string, στην τοποθεσία left, bottom
  • drawRect(left, top, width, height)
    • ‘Άδειο’ ορθογώνιο
  • fillRect(left, top, width, height)
    • ‘Γεμάτο’ ορθογώνιο
  • drawLine(x1, y1, y2, y2)
    • Γραμμή
graphics1
Μέθοδοι Graphics
  • drawOval, fillOval
    • Σχεδιάζει ένα οβάλ σχήμα. Τα arguments καθορίζουν τα ορθογώνια borders
  • drawPolygon, fillPolygon
    • Τα points αποθηκεύονται σε array ή στην Polygon class.
    • By default κλειστή πολυγωνική γραμμή. Εναλακτικά drawPolyline
  • drawImage
    • Φορτώνει μία εικόνα
    • Υποστηρίζει JPG ή GIF format
drawing color
Drawing Color
  • setColor, getColor
    • Καθορίζει το foreground color (χρώμα σχεδίασης)
    • Default: το foreground color του παραθύρου
    • Υπάρχουν προκαθορισμένα χρώματα (Color.red, Color.yellow κτλπ), ή new Color(r, g, b)
graphics font
Graphics Font
  • setFont, getFont
    • Καθορισμός του font για strings
modes
Άλλα modes
  • setXORMode
    • Χρήσιμο για selections
  • setPaintMode
    • Επιστροφή στο κανονικό mode
slide23
Παράθυρα
  • Containers
    • Τα περισσότερα παράθυρα θεωρούνται Containers. Μπορούν να κρατάνε αλλα παράυθρα ή GUI components. Δεν ισχύει για Canvas
  • Layout Managers
    • Για να ρυθμίζουν μεγέθη και θέσεις components πάνω στα παράθυρα
  • Events
    • Για input (mouse, keyboard etc)
slide24
Παράθυρα (Συνέχεια)
  • Σχεδιασμός
    • Subclass με δικιά της paint method
  • Popup Windows
    • (Frame και Dialog) έχουν δικιά τους μπάρα
    • (Canvas και Panel) πρέπει να γίνουν embed
components
Components
  • Χρήσιμες συναρτήσεις
    • getBackground/setBackground ..
    • Paint
    • setVisible (true, false)
    • List
    • getParent
slide26
Παράδειγμα

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));

}

}

}

2 confirmation dialog
Παράδειγμα 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);

}

slide28
Συνέχεια

Public void actionPerformed(ActionEvent event) {

if (event.getSource() == yes) {

System.exit(0);

} else {

dispose();

}

}

}

dialog
Χρησιμοποίηση του Dialog

Public 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);

}

}

}