Java és web programozás

Hasonló dokumentumok
Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

Grafikus felületek a programozó szempontjából grafikus elemek absztrakt reprezentációja az egyes elemek tulajdonságait leíró adatstruktúrák.

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Programozás III GRAFIKA RAJZOLÁS SWING FELÜLETEN RAJZOLÁS GRAFIKA HASZNÁLATA. Rajzolni az awt csomag Graphics osztályának metódusaival tudunk.

Java Programozás 3. Gy: Java GUI. Swing, AWT

Programozási technológia

Java és web programozás

VII. Appletek, grafika

Java és web programozás

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

TikZ, a L A T E X grakája

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Swing. (A javax.swing csomag)

Tartalomjegyzék. Bevezetés...2

Szoftvertechnológia alapjai Java előadások

BME MOGI Gépészeti informatika 8.

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Grafikai lehetőségek

BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

OOP: Java 8.Gy: Abstract osztályok, interfészek

Java felhasználói felület

mintásfal mintásfal :m :sz :dbjobbra :dbfel

Mechatronika segédlet 3. gyakorlat

Osztályok. 4. gyakorlat

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Bevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása

Java és web programozás

Java és web programozás

Abstract osztályok és interface-ek. 7-dik gyakorlat

Java felhasználói felület

Java és web programozás

Programozási nyelvek 2. előadás

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

BME MOGI Gépészeti informatika 15.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Programozás 7.o Az algoritmus fogalma (ismétlés)

Java Programozás 11. Ea: MVC modell

Programozási nyelvek Java

A Paint program használata

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Mesh generálás. IványiPéter

Imagine Logo Tanmenet évfolyam

BME MOGI Gépészeti informatika 6.

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Kalapácsvetés 2016 szöveges

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)

Programozási nyelvek Java

4. Gy: JAVA osztályok

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Java programozási nyelv 4. rész Osztályok II.

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

OOP: Java 4.Gy: Java osztályok

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Algoritmusok raszteres grafikához

Objektumorientált Programozás VI.

BME MOGI Gépészeti informatika 14.

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

4. Lecke. Körök és szabályos sokszögek rajzolása. 4.Lecke / 1.

OOP: Java 5.Gy: Osztály, referencia, konstruktor

Java és web programozás

Lakóház tervezés ADT 3.3-al. Segédlet

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

Java programozási nyelv 6. rész Java a gyakorlatban

Java felhasználói felület

Animáció Inkscape-pel

Térbeli transzformációk, a tér leképezése síkra

Eseményvezérelt alkalmazások fejlesztése II 3. előadás. Windows Forms dinamikus felhasználói felület, elemi grafika

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Szoftvertechnolo gia gyakorlat

Rajz 01 gyakorló feladat

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

Java és web programozás

OOP #14 (referencia-elv)

CAD-CAM-CAE Példatár

Programozási nyelvek 1. előadás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Cohen-Sutherland vágóalgoritmus

Mechatronika segédlet 2. gyakorlat

components : IContainer dx : int dy : int tmidőzítő : Timer toolstripseparator1 : ToolStripSeparator tsmikilépés : ToolStripMenuItem

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

Word VI. Lábjegyzet. Ebben a részben megadhatjuk, hogy hol szerepeljen a lábjegyzet (oldal alján, szöveg alatt).

Programozás I. Első ZH segédlet

OOP: Java 8.Gy: Gyakorlás

JAVA PROGRAMOZÁS 3.ELŐADÁS

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Átírás:

Budapesti M szaki Egyetem 2015. 03. 18.

6. El adás

Graka Java-ban Emlékezzünk kicsit vissza a tikz-re: \begin{tikzpicture \draw (0,0) node[draw,circle] (S) {s; \draw (3,2) node[draw,circle] (A) {a; \draw (3,-2) node[draw,circle] (B) {b;... Ehhez kicsit hasonló lesz a rajzolás Java-ban.

Keretek Kell valami amibe tudunk rajzolni. Három ilyennel fogunk megismerkedni: Frame JFrame JPanel

Keretek Kell valami amibe tudunk rajzolni. Három ilyennel fogunk megismerkedni: Frame JFrame JPanel Kezdjük a Frame-el: public class Jatek extends Frame {... public void paint(graphics g) { // Rajzolas... Csak akkor fogjuk használni, ha csak nagyon kicsi progit írunk, pl gyakorlati feladatokat.

JFrame Tekintsünk erre úgy, mint a programjaink fõablakára. Ez lesz a kiinduló pontja (mondhatjuk úgy, hogy a main-je) a grakus programjainknak. A konstruktorában érdemes használni a következõ metódusait: setsize(int, int): beállítja az ablak méretét settitle(string): beállítja az ablak nevét setvisible(true): láthatóvá teszi az ablakban rajzolt dolgokat

JFrame példa public class AsteroidsGame extends JFrame { public AsteroidsGame() { initui(); private void initui() { setsize(screenx, screeny); settitle("asteroids"); setvisible(true);... // Ezek mindig itt lesznek: setdefaultcloseoperation(exit_on_close); setlocationrelativeto(null);

Main a JFrame-hez Ezt nem kell teljesen megérteni, elég ha copy-paste-eljük mindig. Ezzel indul el biztonságosan a megírt JFrame osztályunk. public static void main(string[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { AsteroidsGame game = new AsteroidsGame(); );

JPanel A JPanel-re gondolhatunk úgy, mint ablak az ablakban, ennek a segítségével feloszthatjuk az ablakunkat több részre. Viszont ha ezt nem is tervezzük, akkor is érdemes inkább JPanel-be rajzolni és nem közvetlen a JFrame-be. Hogy összekössünk egy JPanel-t egy JFrame-el, a JFrame-hez hozzá kell adnunk a JPanel-t. Ezt egyszerûen megtehetjük az add metódussal a JFrame-ben:... JPanel mypanel = new JPanel(); add(mypanel);... Errõl részletesebben a következõ elõadáson tanulunk, most nézzük inkább hogyan lehet rajzolni.

Rajzolás A Frame-be rajzoláshoz, a paint(graphics) metódust használjuk: public class MyFrame extends Frame { @Override public void paint(graphics g) { // Rajzolas... Míg a JPanel-ben a paintcomponent(graphics) metódust: @Override public void paintcomponent(graphics g) { Graphics2D g2d = (Graphics2D) g.create();... Érdemes Graphics2D-vé alakítani a Graphics-unkat, hogy több lehetõségünk legyen.

Rajzolás Az elõzõ két metódusban használhatjuk a paraméterként kapott Graphics2D objektumot a rajzoláshoz. A következõ legalapvetõbb metódusai vannak: g2d.setcolor(color): beállítja a színt amivel rajzolni fogunk g2d.drawrect(int, int, int, int): kirajzol egy téglalapot, az elsõ kettõ paraméter a téglalap koordinátái, a második kettõ a szélessége és magassága g2d.llrect(int, int, int, int): kitöltött téglalapot rajzol, a paraméterek mint korábban g2d.drawoval(int, int, int, int): egy kör / ellipszist rajzol, a paraméterek mint korábban g2d.drawarc(int, int, int, int, int, int): egy körívet rajzol, elsõ 4 paraméter mint korábban, utolsó elõtti, a körív kezdete, a második a körív hossza Az utolsó kettõbõl is van ll-es változat, lloval és llarc.

Rajzolás példa g2d.setcolor(color.black); // Szín beállítása g2d.drawrect(50, 50, 50, 70); // Keret rajzolása g2d.setcolor(color.blue); g2d.fillrect(50, 50, 50, 70); // Kitöltés g2d.fillarc(120, 130, 110, 100, 5, 150); g2d.filloval(270, 130, 50, 50); A kód elsõ része rajzol egy téglalapot fekete kerettel kékkel kitöltve. A második része rajzol egy körívet és egy kört.

Bonyolultabb rajzolások Rajzolhatunk tetszõleges poligont a GeneralPath osztály használatával. Három fontos metódusa van: moveto(oat, oat): a ceruzát az adott pontra helyezi lineto(oat, oat): az elõzõ pontból húz egy vonalat az adottba closepath(): bezárja a poligont (a legelsõ pontot az utolsóval összeköti) Ha így létrehoztunk egy poligont, akkor még ki kell rajzolnunk a Graphics2D draw vagy ll metódusával. Paraméterként kell átadni nekik a GeneralPath objektumot.

Bonyolultabb rajzolások példa GeneralPath pent = new GeneralPath(); pent.moveto(0, 0); pent.lineto(0, 75); pent.lineto(75, 75); pent.lineto(75, 0); pent.closepath(); g2d.setcolor(color.blue); g2d.fill(pent); Ez a példa rajzol egy téglalapot. Figyeljük meg, hogy elõször le kell tenni valahova a ceruzát a moveto metódussal és csak utána tudunk vonalakat húzni a lineto metódussal.

Stringek kirajzolása Ahhoz, hogy String-et ki tudjunk rajzolni létre kell hozni egy Font objektumot, ami a betûk megjelenését szabályozza: Font(String, int, int): az elsõ paraméter a betûkészletet adja meg (pl Ariel) a második a betû stílusát (pl Font.PLAIN vagy Font.BOLD) a harmadik a betûméretet. A Graphics2D osztály setfont metódusával állíthatjuk be a fontot, majd a drawstring metódusával írhatunk ki Stringet. g2d.drawstring(string, int, int): az elsõ paraméter a kiírandó String a második kettõ a koordinátái a szövegnek

Stringek kirajzolása példa g2d.setcolor(color.black); g2d.setfont(new Font("Ariel", Font.PLAIN, 20)); g2d.drawstring("volt egyszer egy kiskutya", 50, 40); Itt közvetlenül a setfont metódusban hoztam létre a Font-ot, de külön változóba is menthetjük, de ez felesleges.

Koordináta transzformáció Elég gyakran esik meg, hogy el kell forgatnunk valamilyen objektumot, vagy az egész képernyõt el kell tolnunk egy vektorral. Ezeket is viszonylag egyszerû megoldani három metódus segítségével: g2d.translate(double, double): az adott vektorral eltolja a koordinátatengely középpontját g2d.rotate(double, double, double): az elsõ paraméterû radiánnal elforgatja a második két paraméter körüli pont körül a koordinátatengelyt g2d.scale(double, double): az adott értékekkel felskálázza a koordinátatengelyeket

Koordináta transzformáció Ha vissza szeretnénk térni az eredeti koordinátázáshoz miután egy transzformációt végeztünk, akkor érdemes elõször egy másolatot készíteni a Graphics-ról, még a transzformáció elõtt: Graphics2D g2d = (Graphics2D) g.create(); Majd, ha végeztünk a transzformálással és a rajzolással (g2d-t kell használnunk), akkor a következõ paranccsal visszaállunk az eredeti koordinátázáshoz: g2d.dispose();

Koordináta transzformáció példa Graphics2D g2d = (Graphics2D) g.create(); g2d.setcolor(color.black); g2d.rotate(math.toradians(25), 100, 30); g2d.translate(10, 10); g2d.scale(2, 2); g2d.drawrect(100, 30, 50, 70); g2d.dispose(); Itt egy téglalapot forgatok el 25 fokkal és rajzolom ki a (10, 10) vektorral eltolva és kétszeres skálázással. Ha megtörtént a kirajzolás akkor visszatérek az eredeti koordinátázásra, hogy a többi rajzolásnál ne legyen probléma a transzformálásból.