Fejlett Webes Technológiák II.

Slides:



Advertisements
Hasonló előadás
4. alkalom – Hálózat Kezelés
Advertisements

Osztály leszármaztatás
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
GoldWorks grafika. Grafikus objektumok  előre definiált keretek  images (egy vagy több rés értékének reprezentálása)  canvases (image-ek megjelenítésére)
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 8. rész – Grafikus felhasználói felület Nyugat-Magyarországi Egyetem Faipari Mérnöki.
II. Grafikus felhasználói interfész
2D grafikus rendszerek Szirmay-Kalos László. 2D grafikus editor: GUI, use-case, dinamikus modell L L L R LD LU MouseLDown első pont MouseLDown második...
Adatbányászati technikák (VISZM185)
Öröklődés 2..
HADOOP Korszerű Adatbázisok Elérés, Belépés Elérés: eszakigrid109.inf.elte.hu Belépés: felhasználó/jelszó: neptun-kód Manager oldalak:
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
© Kozsik Tamás Grafikus felhasználói felületek.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Öröklődés Polimorfizmus Csomagok Absztrakt osztályok, interfészek
Fájlkezelés, IO Kivételkezelés Belső osztályok
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
Programozás II. 3. Gyakorlat C++ alapok.
Tömbök ismétlés Osztályok Java-ban Garbage collection
STÍLUSOK Tulajdonságok és értékek. Színek megadási módjai H1 {color: #CCF150} H1 {color: rgb(204,241,80)} H1 {color: rgb(80%,95%,30%)} H1 {color: red}
Hernyák Zoltán XML és HTML.
Az objektum-orientált tervezési alapelvek kritikai vizsgálata
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
C# osztályok Krizsán Zoltán 1.0.
Krizsán Zoltán iit 1.2.  Nem kell vizuális felületnek lennie.  Delegátumok segítségével valósíthatja meg a.NET. Krizsán Zoltán iit Delegátumok C#-ban2.
Lénárt Anett egyetemi adjunktus - PTE PMMK Rendszer- és Szoftvertechnológia Tanszék Előadás JavaScript Tananyag: W eb - programozás.
Számítógépes Grafika 1. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Kivételkezelés.
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
XHTML – a tanultak összefoglalása
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
Léczfalvy Ádám MIDlet-ek.
A PHP 5 újdonságai Az OOP terén. Miről lesz szó? Osztályok kezelése – Új direktívák – Konstruktor – Destruktor Interfészek Kivételkezelés.
CSS A CSS bemutatása.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 7. gyakorlat.
Számítógépes Grafika 4. gyakorlat Programtervező informatikus (esti)‏ 2011/2012 őszi félév.
Java programozási nyelv Filekezelés
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Programozás III KOLLEKCIÓK.
Grafikai lehetőségek WPF-ben Egyszerű grafika (Shape-ek)
Programozás III KOLLEKCIÓK.
Számítógépes Grafika 4. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Vizualizáció és képszintézis Sugárkövetés (Dart + GLSL) Szécsi László.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 7. gyakorlat.
Számítógépes Grafika 3. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 7. gyakorlat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
JavaScript a böngészőben
Fejlett Webes Technológiák II.
Fejlett Webes Technológiák II.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
B M Java Programozás 7. Gy: Java alapok IT A N Adatkezelő 3.rész
B M Java Programozás 1. Gy: Java alapok IT A N Ismétlés ++
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
B M Java Programozás 6. Gy: Java alapok IT A N Adatkezelő 2.rész
Fejlett Webes Technológiák II.
Előadás másolata:

Fejlett Webes Technológiák II. Bilicki Vilmos 2002.10.14

A mai előadás tartalma: MIDP (Mobile Information Device Profile) Magas szintű eseménykezelés Alacsony szintű eseménykezelés, grafika

Eseménykezelés Felhasználói műveletek kezelése: Absztrakt parancsok (magas szintű grafika esetén) Alacsony szintű események (alacsony szintű grafika esetén) paint() metódus run() metódus

Absztrakt parancsok Parancsokat (Commands) definiálunk és ezeket absztrakt elemekhez rendeljük Displayable objektumhoz rendelhetünk ilyen parancsokat az addCommand() metódus segítségével A készülék stílusa meghatározhatja az ilyen absztrakt elemek helyét (pl.: vissza a bal oldalon) A Command objektum paraméterei: Label (a felirat) CommandType (a parancs jelentése, ha saját akkor SCREEN, egyébként megváltozhat) Priority (a parancs prioritása)

CommandListener A magas szintű eseménykezelés a Listener modellen alapul. Ahhoz, hogy egy objektum Listener legyen meg kell valósítania a CommandListener interfészt void commandAction(Command c, Displayable d); Akkor kapja meg az eseményeket, ha a Displayable objektumhoz: Vannak parancsok csatolva (addCommand()) Van Listener regisztrálva setCommandListener()

Példa alkalmazás Választó ablak (Choice) otherScreen() MIDlet (RecSet ) otherScreen() otherScreen() Bevitel Ablak (Screen) outPut()

Osztályok

RecSet startApp() protected void startApp() throws MIDletStateChangeException { try { recordStore = RecordStore.openRecordStore(RECORD_STORE_NAME, true); } catch (RecordStoreException rse) { screen = new Screen(this,"Bevitel","",255,0); choiceSc = new Choice(this,"Bevitel",255); Display.getDisplay(this).setCurrent(screen);

RecSet otherScreen(String str) void otherScreen(String str) { if(Display.getDisplay(this).getCurrent() == choiceSc) { if(str=="") { Display.getDisplay(this).setCurrent(screen); } else Alert alert; Image source = null; try{ source = Image.createImage("/kep1.png"); } catch(Exception e){} alert = new Alert(str, "Ez egy Alert",source,null); Display.getDisplay(this).setCurrent(alert); } { Display.getDisplay(this).setCurrent(choiceSc); }

RecSet outPut(String str)/I void outPut(String str) { String input; Alert alert; alert = new Alert("A beirt szoveg", str,null,null); Display.getDisplay(this).setCurrent(alert); ByteArrayOutputStream bout = null; DataOutputStream dout = null; try { bout = new ByteArrayOutputStream(); dout = new DataOutputStream(bout); dout.writeUTF(str); byte[] record = bout.toByteArray(); if (recordStore.getNumRecords() > 0) { recordStore.setRecord(1, record, 0, record.length); } else { recordStore.addRecord(record, 0, record.length); } } catch (RecordStoreException rse) {} catch (IOException ioe) {}

RecSet outPut(String str)/II finally { if (dout != null) { try { dout.close(); } catch (IOException ioe) { } } if (bout != null) { try { bout.close(); }

RecSet outPut(String str)/III DataInputStream din = null; try { if (recordStore.getNumRecords() > 0) { byte[] record = recordStore.getRecord(1); din = new DataInputStream(new ByteArrayInputStream(record)); input = din.readUTF(); alert = new Alert("A beolvasott",input,null,null); Display.getDisplay(this).setCurrent(alert); } else {

RecSet outPut(String str)/IV catch (RecordStoreException rse) { } catch (IOException ioe) { finally { if (din != null) { try { din.close();

Screen/I public class Screen extends TextBox implements CommandListener { private RecSet midlet; private Command exitCommand; private Command otherScreen; private Command okCommand; public Screen(RecSet midlet, String p0, String p1, int p2, int p3) { super( p0, p1, p2, p3); this.midlet = midlet; exitCommand = new Command("Kilep", Command.EXIT, 1); otherScreen = new Command("Masik", Command.SCREEN, 1); okCommand = new Command("Kiir", Command.OK, 1); addCommand(exitCommand); addCommand(otherScreen); addCommand(okCommand); setCommandListener(this); }

Screen/II public void commandAction(Command c, Displayable p1) { if (c == okCommand) { midlet.outPut(this.getString()); } if (c == exitCommand) midlet.exitRequested(); if (c == otherScreen) midlet.otherScreen(""); }}

Choice/I public class Choice extends List implements CommandListener { private RecSet midlet; private Command otherScreen; private Command commandOK; public Choice(RecSet midlet,String p0, int p1) { super( "Lista", List.IMPLICIT); this.midlet = midlet; append("Elso", loadImage("/kep.png")); append("Masodik", loadImage("/kep1.png")); commandOK = new Command("OK", Command.SCREEN, 1); otherScreen = new Command("Masik", Command.SCREEN, 1); addCommand(commandOK); addCommand(otherScreen); setCommandListener(this); }

Choice/II public void commandAction(Command c, Displayable p1) { if (c == otherScreen) { midlet.otherScreen(""); } if (c == commandOK) midlet.otherScreen(getString(getSelectedIndex()));

Choice III. private Image loadImage(String s) { Image image = null; try{ image = Image.createImage(s); } catch(Exception e) return image;

Alacsony szintű események, grafika A következő billentyűzet eseményeket kezeli: public void keyPressed(int keyCode); public void keyReleased(int keyCode); public void keyRepeated(int keyCode); GameAction: public void keyPressed(int keyCode) int action = getGameAction(keyCode); A keyReleased nincs feltétlenül megvalósítva

Példa class TetrisCanvas extends Canvas { int leftKey, rightKey, downKey, rotateKey; void init () { leftKey = getKeyCode(LEFT); rightKey = getKeyCode(RIGHT); downKey = getKeyCode(DOWN); rotateKey = getKeyCode(FIRE); } public void keyPressed(int keyCode) { if (keyCode == leftKey) { moveBlockLeft(); } else if (keyCode = rightKey) { ...}}}

Példa GameAction public void keyPressed(int keyCode) { int action = getGameAction(keyCode); if (action == LEFT) { moveBlockLeft(); } else if (action == RIGHT) { ... }

Rajzolás Canvas osztályból kell származtatni protected abstract void paint(Graphics g) Nincs automaikus újrarajzolás: repaint(x2,y2, wid, ht) serviceRepaints(); Egyetlen rajzolási mód a pixel felülírás 24 bit színmélység (8 piros,8 kék, 8 zöld) g.setColor(WHITE); g.fillRect(0,0,95,50); g.setColor(BLACK);

Koordináta rendszer A képernyő bal felső sarkában 0,0 public static final int getWidth(); public static final int getHeight();

Példa Grafikus megjelenítő (Screen) MIDlet (GraphicsSample )

GraphicsSample public class GraphicsSample extends MIDlet { Screen scr; public GraphicsSample() { } protected void startApp() throws MIDletStateChangeException { scr = new Screen(this); Display.getDisplay(this).setCurrent(scr); protected void pauseApp() { } protected void destroyApp(boolean p0) throws MIDletStateChangeException { }}

Screen/I import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class Screen extends Canvas { GraphicsSample midlet; private static final int BLACK = 0x00000000; private static final int WHITE = 0x00FFFFFF; private static final int RED = 0x00FF0000; private static final int BLUE = 0x000000FF; int px,py; public Screen(GraphicsSample midlet) { this.midlet = midlet; px = 25; py = 25; }

Screen/II protected void paint(Graphics g) { g.setColor(WHITE); g.fillRect(0,0,g.getClipWidth(),g.getClipHeight()); g.setColor(BLACK); g.drawArc(px,py,20,20,0,360); }

Screen/III protected void keyPressed(int keyCode) { int gameAction = getGameAction(keyCode); switch (gameAction) case FIRE: break; case RIGHT: px++; repaint(); break; case DOWN: py++; repaint(); break; case LEFT: px--; repaint(); break; case UP: py--; repaint(); break; default: break; }

Rajzolás A Graphics osztály metódusai segítségével rajzolhatunk: Szöveget Képeket Vonalakat Négyszögeket (telítettek is lehetnek) Szögeket (telítettek is lehetnek) A vonal stílusa lehet: Folyamatos (solid) Szaggatott (dotted) public void setStrokeStyle(int style)

Szöveg kiíratása public void drawChar(char character, int x, int y, int anchor) public void drawChars(char[] data, int offset, int length, int x, int y, int anchor) public void drawString(String str, int x, int y, int anchor) public void drawSubstring(String str, int offset, int len, int x, int y, int anchor) Szöveg irány: LEFT, HCENTER, RIGHT TOP, BASELINE, BOTTOM

Példa g.drawString(str, x, y, TOP|LEFT); g.drawString(str, x + f.stringWidth(str)/2, y, TOP|HCENTER); g.drawString(str, x + f.stringWidth(str), y, TOP|RIGHT); g.drawString(str, x, y + f.getBaselinePosition(), BASELINE|LEFT); g.drawString(str, x + f.stringWidth(str)/2, y + f.getBaselinePosition(), BASELINE|HCENTER); g.drawString(str, x + f.stringWidth(str), y + f.getBaselinePosition(), BASELINE|RIGHT); drawString(str, x, y + f.getHeight(), BOTTOM|LEFT); drawString(str, x + f.stringWidth(str)/2, y + f.getHeight(), BOTTOM|HCENTER); drawString(str, x + f.stringWidth(str), y + f.getHeight(), BOTTOM|RIGHT);

Graphics metódusok public void drawLine(int x1, int y1, int x2, int y2) public void drawRect(int x, int y, int width, int height) public void fillRect(int x, int y, int width, int height) public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) public void drawImage(Image img, int x, int y, int anchor)