97
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek SWT haladó komponensek

Nyílt Fejlesztőrendszerek SWT haladó komponensek

  • Upload
    melora

  • View
    34

  • Download
    1

Embed Size (px)

DESCRIPTION

Nyílt Fejlesztőrendszerek SWT haladó komponensek. SWT eddig. Alapvetések natív Építőelemek Eseménykezelés Komponensek Ablak Gomb Text …. SWT haladó. Komplex komponensek *Bar Tree Table … Rajzolás Nyomtatás. SWT haladó. Komplex komponensek *Bar Tree Table … Rajzolás - PowerPoint PPT Presentation

Citation preview

Page 1: Nyílt Fejlesztőrendszerek SWT haladó komponensek

Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Nyílt FejlesztőrendszerekSWT haladó komponensek

Page 2: Nyílt Fejlesztőrendszerek SWT haladó komponensek

2Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

SWT eddig

Alapvetések− natív− Építőelemek− Eseménykezelés

Komponensek− Ablak− Gomb− Text− …

Page 3: Nyílt Fejlesztőrendszerek SWT haladó komponensek

3Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

SWT haladó

Komplex komponensek− *Bar− Tree− Table− …

RajzolásNyomtatás

Page 4: Nyílt Fejlesztőrendszerek SWT haladó komponensek

4Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

SWT haladó

Komplex komponensek− *Bar− Tree− Table− …

RajzolásNyomtatás

Page 5: Nyílt Fejlesztőrendszerek SWT haladó komponensek

5Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Menu

Menü megjelenítése new Menu(parent, SWT.BAR);

− BAR – felső szintű menü− DROP_DOWN – almenü− POP_UP – helyi menü

Fontos: shell.setMenuBar(Menu) Menü elemek: MenuItem

− SWT.CASCADE – almenüje van− SWT.PUSH –”sima” elem

Egy item-nek is lehet menüje (almenü)− setMenu()

Page 6: Nyílt Fejlesztőrendszerek SWT haladó komponensek

6Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Toolbar

new ToolBar(parent, SWT.HORIZONTAL)Eszközkészlet megjelenítéseStílusok

− HORIZONTAL, VERTICAL− WRAP, FLAT, RIGHT− SHADOW_OUT

Események: nincsMetódusok: getItems(), getItem(int)

Page 7: Nyílt Fejlesztőrendszerek SWT haladó komponensek

7Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

ToolItem

new ToolItem(toolbar,stílus)Stílusok

− PUSH, RADIO, DROP_DOWN, SEPARATOR,CHECK

Az API hasonlít a Button-éhozSEPARATOR esetén a szélesség

(setWidth(int)) beállítható

Page 8: Nyílt Fejlesztőrendszerek SWT haladó komponensek

8Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

ToolItem

new ToolItem(toolbar,stílus)Stílusok

− PUSH, RADIO, DROP_DOWN, SEPARATOR,CHECK

Az API hasonlít a Button-éhozSEPARATOR esetén a szélesség

(setWidth(int)) beállítható

Page 9: Nyílt Fejlesztőrendszerek SWT haladó komponensek

9Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Toolbar példa – menü dropdown

final ToolBar toolBar= new ToolBar(shell, SWT.HORIZONTAL);

final ToolItem item = new ToolItem(toolBar, SWT.DROP_DOWN);

item.setImage(createToolIcon(display, "run"));final Menu menu = new Menu(shell, SWT.POP_UP);for(int i = 0; i < 8; i++) { new MenuItem(menu, SWT.PUSH).setText("Item"+ i);}

item.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = new Point(event.x, event.y); point = display.map(toolBar, null, point);

menu.setLocation(point); menu.setVisible(true);}}});

Page 10: Nyílt Fejlesztőrendszerek SWT haladó komponensek

10Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Toolbar példa – menü dropdown

final ToolBar toolBar= new ToolBar(shell, SWT.HORIZONTAL);

final ToolItem item = new ToolItem(toolBar, SWT.DROP_DOWN);

item.setImage(createToolIcon(display, "run"));final Menu menu = new Menu(shell, SWT.POP_UP);for(int i = 0; i < 8; i++) { new MenuItem(menu, SWT.PUSH).setText("Item"+ i);}

item.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = new Point(event.x, event.y); point = display.map(toolBar, null, point);

menu.setLocation(point); menu.setVisible(true);}}});

ToolBar és ToolItem létrehozása

Page 11: Nyílt Fejlesztőrendszerek SWT haladó komponensek

11Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Toolbar példa – menü dropdown

final ToolBar toolBar= new ToolBar(shell, SWT.HORIZONTAL);

final ToolItem item = new ToolItem(toolBar, SWT.DROP_DOWN);

item.setImage(createToolIcon(display, "run"));final Menu menu = new Menu(shell, SWT.POP_UP);for(int i = 0; i < 8; i++) { new MenuItem(menu, SWT.PUSH).setText("Item"+ i);}

item.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = new Point(event.x, event.y); point = display.map(toolBar, null, point);

menu.setLocation(point); menu.setVisible(true);}}});

Menü létrehozása

Page 12: Nyílt Fejlesztőrendszerek SWT haladó komponensek

12Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Toolbar példa – menü dropdown

final ToolBar toolBar= new ToolBar(shell, SWT.HORIZONTAL);

final ToolItem item = new ToolItem(toolBar, SWT.DROP_DOWN);

item.setImage(createToolIcon(display, "run"));final Menu menu = new Menu(shell, SWT.POP_UP);for(int i = 0; i < 8; i++) { new MenuItem(menu, SWT.PUSH).setText("Item"+ i);}

item.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = new Point(event.x, event.y); point = display.map(toolBar, null, point);

menu.setLocation(point); menu.setVisible(true);}}});

Menü elemek létrehozása

Page 13: Nyílt Fejlesztőrendszerek SWT haladó komponensek

13Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Toolbar példa – menü dropdown

final ToolBar toolBar= new ToolBar(shell, SWT.HORIZONTAL);

final ToolItem item = new ToolItem(toolBar, SWT.DROP_DOWN);

item.setImage(createToolIcon(display, "run"));final Menu menu = new Menu(shell, SWT.POP_UP);for(int i = 0; i < 8; i++) { new MenuItem(menu, SWT.PUSH).setText("Item"+ i);}

item.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = new Point(event.x, event.y); point = display.map(toolBar, null, point);

menu.setLocation(point); menu.setVisible(true);}}});

ToolItem esemény-kezelő írása

Page 14: Nyílt Fejlesztőrendszerek SWT haladó komponensek

14Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Toolbar példa – menü dropdown

final ToolBar toolBar= new ToolBar(shell, SWT.HORIZONTAL);

final ToolItem item = new ToolItem(toolBar, SWT.DROP_DOWN);

item.setImage(createToolIcon(display, "run"));final Menu menu = new Menu(shell, SWT.POP_UP);for(int i = 0; i < 8; i++) { new MenuItem(menu, SWT.PUSH).setText("Item"+ i);}

item.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = new Point(event.x, event.y); point = display.map(toolBar, null, point);

menu.setLocation(point); menu.setVisible(true);}}});

SWT.ARROW jelzi, hogy a kinyitásra

kattintottak

Page 15: Nyílt Fejlesztőrendszerek SWT haladó komponensek

15Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Toolbar példa – menü dropdown

final ToolBar toolBar= new ToolBar(shell, SWT.HORIZONTAL);

final ToolItem item = new ToolItem(toolBar, SWT.DROP_DOWN);

item.setImage(createToolIcon(display, "run"));final Menu menu = new Menu(shell, SWT.POP_UP);for(int i = 0; i < 8; i++) { new MenuItem(menu, SWT.PUSH).setText("Item"+ i);}

item.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = new Point(event.x, event.y); point = display.map(toolBar, null, point);

menu.setLocation(point); menu.setVisible(true);}}});

Koordináták átszámítása képernyő-

koordinátákká

Page 16: Nyílt Fejlesztőrendszerek SWT haladó komponensek

16Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Toolbar példa – menü dropdown

final ToolBar toolBar= new ToolBar(shell, SWT.HORIZONTAL);

final ToolItem item = new ToolItem(toolBar, SWT.DROP_DOWN);

item.setImage(createToolIcon(display, "run"));final Menu menu = new Menu(shell, SWT.POP_UP);for(int i = 0; i < 8; i++) { new MenuItem(menu, SWT.PUSH).setText("Item"+ i);}

item.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = new Point(event.x, event.y); point = display.map(toolBar, null, point);

menu.setLocation(point); menu.setVisible(true);}}});

Menü megjelenítése

Page 17: Nyílt Fejlesztőrendszerek SWT haladó komponensek

17Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

CoolBar, CooITem

new CoolBar(parent.SWT.FLAT)Eszköz-kontrolok elhelyezése

− Átrendezhető, testre szabható

new CoolItem(coolBar,SWT.NONE)− Tartó a kontrol számára− Méretezhető (preferredSize, minimumSize)

Fontos: CoolItem.setControl()CoolBar.setLocked()

Page 18: Nyílt Fejlesztőrendszerek SWT haladó komponensek

18Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Coolbar példa – nyomógombfinal CoolBar coolBar= new CoolBar(window, SWT.BORDER);

final CoolItem item = new CoolItem(coolBar, SWT.NONE);

Button butt = new Button(coolBar,SWT.PUSH);

butt.setText("haliho");item.setControl(butt);Point size = butt.computeSize(SWT.DEFAULT,SWT.DEFAULT);

item.setPreferredSize(item.computeSize(size.x,size.y));

coolBar.setLocked(false);

Page 19: Nyílt Fejlesztőrendszerek SWT haladó komponensek

19Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Coolbar példa – nyomógombfinal CoolBar coolBar= new CoolBar(window, SWT.BORDER);

final CoolItem item = new CoolItem(coolBar, SWT.NONE);

Button butt = new Button(coolBar,SWT.PUSH);

butt.setText("haliho");item.setControl(butt);Point size = butt.computeSize(SWT.DEFAULT,SWT.DEFAULT);

item.setPreferredSize(item.computeSize(size.x,size.y));

coolBar.setLocked(false);

CoolBar létrehozása

Page 20: Nyílt Fejlesztőrendszerek SWT haladó komponensek

20Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Coolbar példa – nyomógombfinal CoolBar coolBar= new CoolBar(window, SWT.BORDER);

final CoolItem item = new CoolItem(coolBar, SWT.NONE);

Button butt = new Button(coolBar,SWT.PUSH);

butt.setText("haliho");item.setControl(butt);Point size = butt.computeSize(SWT.DEFAULT,SWT.DEFAULT);

item.setPreferredSize(item.computeSize(size.x,size.y));

coolBar.setLocked(false);

CoolItem létrehozása

Page 21: Nyílt Fejlesztőrendszerek SWT haladó komponensek

21Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Coolbar példa – nyomógombfinal CoolBar coolBar= new CoolBar(window, SWT.BORDER);

final CoolItem item = new CoolItem(coolBar, SWT.NONE);

Button butt = new Button(coolBar,SWT.PUSH);

butt.setText("haliho");item.setControl(butt);Point size = butt.computeSize(SWT.DEFAULT,SWT.DEFAULT);

item.setPreferredSize(item.computeSize(size.x,size.y));

coolBar.setLocked(false);

Gomb létrehozása,Hozzáadása az item-hez

Page 22: Nyílt Fejlesztőrendszerek SWT haladó komponensek

22Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Coolbar példa – nyomógombfinal CoolBar coolBar= new CoolBar(window, SWT.BORDER);

final CoolItem item = new CoolItem(coolBar, SWT.NONE);

Button butt = new Button(coolBar,SWT.PUSH);

butt.setText("haliho");item.setControl(butt);Point size = butt.computeSize(SWT.DEFAULT,SWT.DEFAULT);

item.setPreferredSize(item.computeSize(size.x,size.y));

coolBar.setLocked(false);

Méret beállítása

Page 23: Nyílt Fejlesztőrendszerek SWT haladó komponensek

23Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Coolbar példa – nyomógombfinal CoolBar coolBar= new CoolBar(window, SWT.BORDER);

final CoolItem item = new CoolItem(coolBar, SWT.NONE);

Button butt = new Button(coolBar,SWT.PUSH);

butt.setText("haliho");item.setControl(butt);Point size = butt.computeSize(SWT.DEFAULT,SWT.DEFAULT);

item.setPreferredSize(item.computeSize(size.x,size.y));

coolBar.setLocked(false);Szerkeszthető marad a

coolBar

Page 24: Nyílt Fejlesztőrendszerek SWT haladó komponensek

24Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Tree

new Tree(parent.SWT.SINGLE) Stílusok

− SINGLE – egyszeres kijelölés− MULTI – többes kijelölés− CHECK – checkbox-os tree

Események− Selection – egy elemet kiválasztottak− defaultSelection – egy elemen Enter-t ütöttek− Collapse – bezártak egy részfát− Expand – kinyitottak egy részfát

Mindig van scrollbar!

Page 25: Nyílt Fejlesztőrendszerek SWT haladó komponensek

25Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

TreeItem

new TreeItem(parent, SWT.NONE)Szülő

− Tree – gyökérelem− TreeItem - gyerek

Lehet− Szöveg, ikon, checkbox

Az expand eseménnyel lehet lazy-load

Page 26: Nyílt Fejlesztőrendszerek SWT haladó komponensek

26Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Tree & Item

Érdekes metódusok− showSelection() – megmutatja a kijelölt

elemet− showItem(TreeItem) – megmutatja az itemet− setSelection(TreeItem[]) – getSelection()− selectAll() – deselectAll()− setTopItem() – a legfelső láthatóvá teszi az

elemet, ha lehet− getTopItem() – visszaadja a legfelső elemet

Page 27: Nyílt Fejlesztőrendszerek SWT haladó komponensek

27Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Table

Egyszerű táblázatnew Table(parent, SWT.SINGLE)Stílusok

− SINGLE – egy kijelölés− MULTI – több kijelölés− CHECK – check boxok− FULL_SELECTION – teljes sort lehet kijelölni− HIDE_SELECTION – ha nincs fókusz nem

mutatja a kijelölést

Page 28: Nyílt Fejlesztőrendszerek SWT haladó komponensek

28Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Table

Metódusok− setHeaderVisible(boolean)− setLinesVisible(boolean)− getHeaderHeight(), getItemHeight()− indexOf(TableColumn), indexOf(TableItem)− getColumn(int), getItem(int)− setTopIndex(int)− isSelected(int), setSelection(int[]),

setSelection(TableItem[])

Page 29: Nyílt Fejlesztőrendszerek SWT haladó komponensek

29Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

TableColumn Item

new TableColumn(table,SWT.LEFT)− Lehet szövege, képe, igazítás− Állítható szélesség− Move, Resize, Selection események

new TableItem(table,SWT.NONE)− Szöveg, kép, checkbox lehet

Page 30: Nyílt Fejlesztőrendszerek SWT haladó komponensek

30Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Table példaTable table = new Table(shell, SWT.BORDER);table.setHeaderVisible(true);for(int i = 0; i < 4; i++) { TableColumn column = new TableColumn(table,SWT.NONE);

column.setText("Column"+ i);}

for(int i = 0; i < 5; i++) { TableItem item = new TableItem(table, SWT.NULL);

for(int j = 0; j < 4; j++) { item.setText(j, "Item "+ i + "-"+ j);}} for(inti = 0; i < 4; i++){ table.getColumn(i).pack();}

table.pack();

Page 31: Nyílt Fejlesztőrendszerek SWT haladó komponensek

31Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Table példaTable table = new Table(shell, SWT.BORDER);table.setHeaderVisible(true);for(int i = 0; i < 4; i++) { TableColumn column = new TableColumn(table,SWT.NONE);

column.setText("Column"+ i);}

for(int i = 0; i < 5; i++) { TableItem item = new TableItem(table, SWT.NULL);

for(int j = 0; j < 4; j++) { item.setText(j, "Item "+ i + "-"+ j);}} for(inti = 0; i < 4; i++){ table.getColumn(i).pack();}

table.pack();

Új tábla

Page 32: Nyílt Fejlesztőrendszerek SWT haladó komponensek

32Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Table példaTable table = new Table(shell, SWT.BORDER);table.setHeaderVisible(true);for(int i = 0; i < 4; i++) { TableColumn column = new TableColumn(table,SWT.NONE);

column.setText("Column"+ i);}

for(int i = 0; i < 5; i++) { TableItem item = new TableItem(table, SWT.NULL);

for(int j = 0; j < 4; j++) { item.setText(j, "Item "+ i + "-"+ j);}} for(inti = 0; i < 4; i++){ table.getColumn(i).pack();}

table.pack();

4 oszlop létrehozása

Page 33: Nyílt Fejlesztőrendszerek SWT haladó komponensek

33Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Table példaTable table = new Table(shell, SWT.BORDER);table.setHeaderVisible(true);for(int i = 0; i < 4; i++) { TableColumn column = new TableColumn(table,SWT.NONE);

column.setText("Column"+ i);}

for(int i = 0; i < 5; i++) { TableItem item = new TableItem(table, SWT.NULL);

for(int j = 0; j < 4; j++) { item.setText(j, "Item "+ i + "-"+ j);}} for(inti = 0; i < 4; i++){ table.getColumn(i).pack();}

table.pack();

5 item (sor) létrehozása

Page 34: Nyílt Fejlesztőrendszerek SWT haladó komponensek

34Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Table példaTable table = new Table(shell, SWT.BORDER);table.setHeaderVisible(true);for(int i = 0; i < 4; i++) { TableColumn column = new TableColumn(table,SWT.NONE);

column.setText("Column"+ i);}

for(int i = 0; i < 5; i++) { TableItem item = new TableItem(table, SWT.NULL);

for(int j = 0; j < 4; j++) { item.setText(j, "Item "+ i + "-"+ j);}} for(inti = 0; i < 4; i++){ table.getColumn(i).pack();}

table.pack();

Minden sorban minden oszlop értékének

beállítása

Page 35: Nyílt Fejlesztőrendszerek SWT haladó komponensek

35Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Table példaTable table = new Table(shell, SWT.BORDER);table.setHeaderVisible(true);for(int i = 0; i < 4; i++) { TableColumn column = new TableColumn(table,SWT.NONE);

column.setText("Column"+ i);}

for(int i = 0; i < 5; i++) { TableItem item = new TableItem(table, SWT.NULL);

for(int j = 0; j < 4; j++) { item.setText(j, "Item "+ i + "-"+ j);}} for(inti = 0; i < 4; i++){ table.getColumn(i).pack();}

table.pack();

„csomagolás”

Page 36: Nyílt Fejlesztőrendszerek SWT haladó komponensek

36Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Browser

new Browser(parent, SWT.NONE)Az operációs rendszer böngészőjét

használjaEsemények: Show, Hide, Open, Close,

(URL)Changed, …Metódusok

− setURL(String)− setText(String)− back(), forward(), stop()

Page 37: Nyílt Fejlesztőrendszerek SWT haladó komponensek

37Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

TabFolder

new TabFolder(parent, SWT.TOP)„Lapozós dialógusablak”Stílusok

− TOP – fülek felül− BOTTOM – fülek alul

Esemény: selection – egy elem kiválasztva

Page 38: Nyílt Fejlesztőrendszerek SWT haladó komponensek

38Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

TabItem

new TabItem(folder, SWT.NONE)Egy lapot jelképezMetódusok

− setText() - fül felirat− setImage() – fül kép− setToolTipText() – tool tipp− setControl() – a kontroll, mely az item területét

elfoglalja

Page 39: Nyílt Fejlesztőrendszerek SWT haladó komponensek

39Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Widget-ek – ami kimarad

ComboGroupListProgressBarScrollBarScale, Slider, Spinner,TableTree – tábla az első oszlopban tree…

Page 40: Nyílt Fejlesztőrendszerek SWT haladó komponensek

40Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Widget-ek – ami kimarad

ComboGroupListProgressBarScrollBarScale, Slider, Spinner,TableTree – tábla az első oszlopban tree…

Page 41: Nyílt Fejlesztőrendszerek SWT haladó komponensek

41Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Dialógusok

Fajtái− MessageBox- üzenetek− ColorDialog – szín-kiválasztás− DirectoryDialog - könyvtárfa− FileDialog – fájl kiválasztás, mentés− FontDialog – betűtípus-választás− PrintDialog – nyomtatás

Az operációs rendszer beépített dialógusait használja

Page 42: Nyílt Fejlesztőrendszerek SWT haladó komponensek

42Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Dialógusok

Metódusok− setText() – címsor beállítása− open() – megnyitás, dialóg-specifikus

visszatérési érték

Stílusok− PRIMARY_MODAL, APPLICATION_MODAL,

SYSTEM_MODAL

Nem Widget alosztályok!

Page 43: Nyílt Fejlesztőrendszerek SWT haladó komponensek

43Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

MessageBox

Metódusok− setMessage() – Üzenet szöveg

Stílusok− ICON_ERROR, ICON_INFORMATION,

ICON_QUESTION, ICON_WARNING, ICON_WORKING

− OK, OK | CANCEL− YES | NO, YES | NO | CANCEL− RETRY | CANCEL, ABORT | RETRY | IGNORE

open() a lenyomott gombbal tér vissza (pl. OK)

Page 44: Nyílt Fejlesztőrendszerek SWT haladó komponensek

44Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

FileDialog

Metódusok− setFileName(String)− setFileExtensions(String[])− setFilterNames(String[])− setFilterPath(String)

Stílusok− OPEN, SAVE, MULTI

open() – fájlnév (String)− Multi esetén: getFileNames()

Page 45: Nyílt Fejlesztőrendszerek SWT haladó komponensek

45Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Grafika

Ha saját widget kell…Ha rajzolni szeretnénkGrafika

− alapok− eseménykezelés− nyomtatás

Page 46: Nyílt Fejlesztőrendszerek SWT haladó komponensek

46Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Koordináta-rendszer

Origó a bal felső sarok (0,0)Minden távolság pixelben adottJobbra és lefelé növekszikJobbról-balra típusú locale esetén az x

koordináta-tengely megfordulhat!A koordináta-rendszer általában control-

relatív, azaz a kontrollon belül érvényes

Page 47: Nyílt Fejlesztőrendszerek SWT haladó komponensek

47Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Point és Rectangle

Point – x,y koordináta-pár− Nincs OS erőforrás

Rectangle – téglalap (koordináta-négyes)− Nincs OS erőforrás− API: contains(Point) intersects(Rectangle),

union(Rectangle), intersection(Rectangle)

Page 48: Nyílt Fejlesztőrendszerek SWT haladó komponensek

48Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

GraphicsContext - GC

Interfész a platform grafikus rendszeréhezTartalmazza az aktuális rajzolási

környezetet (Színek, stílusok, …)Rajzolási környezetek

− Control – általában egy kontrollra rajzolunk− Device – rajzolás egy eszközre (pl. Printer)− Image – rajzolás egy képre, az eredmény

például kimenthető fájlba

Page 49: Nyílt Fejlesztőrendszerek SWT haladó komponensek

49Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Szálkezelés

Nem muszáj az UI szálból rajzolni, de érdemes:− Jósolható: tudjuk, hogy senki sem nyúl a

felülethez, amíg rajzolunk− Könnyen programozható: az UI-hoz való

hozzáférés nem igényel szálak közötti hívásokat

− Biztonságos: néhány operációs rendszer rosszul viseli a háttér-rajzolószálakat

Page 50: Nyílt Fejlesztőrendszerek SWT haladó komponensek

50Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Rajzolás - vonalak

drawLine(int,int,int,int) – egyszerű vonaldrawPolyLine(int[] xyArray) – pont pár –

sorozattal törtvonal rajzolásadrawPolygon(int[] xyArray) – mint az

előző, de a végén lezárja (utolsó párból az elsőig)

Page 51: Nyílt Fejlesztőrendszerek SWT haladó komponensek

51Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Rajzolás - alakzatok

drawRectangle(int,int,int,int) – téglalapdrawRoundRectangle(int,int,int,int,int,int) –

Lekerekített téglalapdrawOval(int,int,int,int) – ellipszisdrawArc(int,int,int,int,int,int) – ellipszis-

szelet− Szögek: fokban, a 0 jobb-vízszintes,

óramutató járásával ellenkezően növekszik

Kitöltött alakzatok: draw helyett fill

Page 52: Nyílt Fejlesztőrendszerek SWT haladó komponensek

52Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Színek

RGB osztály− A szokásos számhármas

Color osztály− Egy RGB és egy Device alapján számol színt− Specifikus színleképzést valósít meg (OS)

SystemColor− OS szinten specifikált színek (pl. BLACK)− Display.getSystemColor(int) hívással

megkapható

Page 53: Nyílt Fejlesztőrendszerek SWT haladó komponensek

53Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region

Egy, több síidom által alkotott terület Region(Device) Metódusok:

− add(Rectangle) - hozzáadás− add(Region)− add(int[]) - poligon− subtract(Rectangle) - kivonás− subtract(Region)− subtract(int[]) - poligon− getBounds() – határok (befoglaló téglalap)− contains(x,y) – tartalmazza-e a pontot− intersects(Rectangle) – van-e közös rész?

OS erőforrásokat fog!

Page 54: Nyílt Fejlesztőrendszerek SWT haladó komponensek

54Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region - felhasználásfinal Region region = new Region(display);

region.add(new int[]{0, 0, 200, 0, 200, 200});region.subtract(new Rectangle(75, 75, 50, 50));region.add(newint[]{25, 125, 75, 125, 75, 175});

shell.addListener(SWT.Paint, newListener() { public void handleEvent(Event event) { GC gc= event.gc; gc.setClipping(region); Rectangle rect= shell.getClientArea(); gc.setBackground(display.getSystemColor(

SWT.COLOR_CYAN)); gc.fillRectangle(0,0,rect.width,rect.height);}});shell.setSize(shell.computeSize(200, 200));

Page 55: Nyílt Fejlesztőrendszerek SWT haladó komponensek

55Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region - felhasználásfinal Region region = new Region(display);

region.add(new int[]{0, 0, 200, 0, 200, 200});region.subtract(new Rectangle(75, 75, 50, 50));region.add(newint[]{25, 125, 75, 125, 75, 175});

shell.addListener(SWT.Paint, newListener() { public void handleEvent(Event event) { GC gc= event.gc; gc.setClipping(region); Rectangle rect= shell.getClientArea(); gc.setBackground(display.getSystemColor(

SWT.COLOR_CYAN)); gc.fillRectangle(0,0,rect.width,rect.height);}});shell.setSize(shell.computeSize(200, 200));

Új régió a képernyőn

Page 56: Nyílt Fejlesztőrendszerek SWT haladó komponensek

56Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region - felhasználásfinal Region region = new Region(display);

region.add(new int[]{0, 0, 200, 0, 200, 200});region.subtract(new Rectangle(75, 75, 50, 50));region.add(newint[]{25, 125, 75, 125, 75, 175});

shell.addListener(SWT.Paint, newListener() { public void handleEvent(Event event) { GC gc= event.gc; gc.setClipping(region); Rectangle rect= shell.getClientArea(); gc.setBackground(display.getSystemColor(

SWT.COLOR_CYAN)); gc.fillRectangle(0,0,rect.width,rect.height);}});shell.setSize(shell.computeSize(200, 200));

Egy háromszög hozzáadása

Page 57: Nyílt Fejlesztőrendszerek SWT haladó komponensek

57Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region - felhasználásfinal Region region = new Region(display);

region.add(new int[]{0, 0, 200, 0, 200, 200});region.subtract(new Rectangle(75, 75, 50, 50));region.add(newint[]{25, 125, 75, 125, 75, 175});

shell.addListener(SWT.Paint, newListener() { public void handleEvent(Event event) { GC gc= event.gc; gc.setClipping(region); Rectangle rect= shell.getClientArea(); gc.setBackground(display.getSystemColor(

SWT.COLOR_CYAN)); gc.fillRectangle(0,0,rect.width,rect.height);}});shell.setSize(shell.computeSize(200, 200));

Egy téglalap kivonása

Page 58: Nyílt Fejlesztőrendszerek SWT haladó komponensek

58Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region - felhasználásfinal Region region = new Region(display);

region.add(new int[]{0, 0, 200, 0, 200, 200});region.subtract(new Rectangle(75, 75, 50, 50));region.add(new int[]{25, 125, 75, 125, 75, 175});

shell.addListener(SWT.Paint, newListener() { public void handleEvent(Event event) { GC gc= event.gc; gc.setClipping(region); Rectangle rect= shell.getClientArea(); gc.setBackground(display.getSystemColor(

SWT.COLOR_CYAN)); gc.fillRectangle(0,0,rect.width,rect.height);}});shell.setSize(shell.computeSize(200, 200));

Egy háromszög hozzáadása

Page 59: Nyílt Fejlesztőrendszerek SWT haladó komponensek

59Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region - felhasználásfinal Region region = new Region(display);

region.add(new int[]{0, 0, 200, 0, 200, 200});region.subtract(new Rectangle(75, 75, 50, 50));region.add(new int[]{25, 125, 75, 125, 75, 175});

shell.addListener(SWT.Paint, newListener() { public void handleEvent(Event event) { GC gc= event.gc; gc.setClipping(region); Rectangle rect= shell.getClientArea(); gc.setBackground(display.getSystemColor(

SWT.COLOR_CYAN)); gc.fillRectangle(0,0,rect.width,rect.height);}});shell.setSize(shell.computeSize(200, 200));

Paint esemény esetén rajzolnunk kell

Page 60: Nyílt Fejlesztőrendszerek SWT haladó komponensek

60Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region - felhasználásfinal Region region = new Region(display);

region.add(new int[]{0, 0, 200, 0, 200, 200});region.subtract(new Rectangle(75, 75, 50, 50));region.add(new int[]{25, 125, 75, 125, 75, 175});

shell.addListener(SWT.Paint, newListener() { public void handleEvent(Event event) { GC gc= event.gc; gc.setClipping(region); Rectangle rect= shell.getClientArea(); gc.setBackground(display.getSystemColor(

SWT.COLOR_CYAN)); gc.fillRectangle(0,0,rect.width,rect.height);}});shell.setSize(shell.computeSize(200, 200));

Beállítjuk a régiót clipping-nek

Page 61: Nyílt Fejlesztőrendszerek SWT haladó komponensek

61Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region - felhasználásfinal Region region = new Region(display);

region.add(new int[]{0, 0, 200, 0, 200, 200});region.subtract(new Rectangle(75, 75, 50, 50));region.add(new int[]{25, 125, 75, 125, 75, 175});

shell.addListener(SWT.Paint, newListener() { public void handleEvent(Event event) { GC gc= event.gc; gc.setClipping(region); Rectangle rect= shell.getClientArea(); gc.setBackground(display.getSystemColor(

SWT.COLOR_CYAN)); gc.fillRectangle(0,0,rect.width,rect.height);}});shell.setSize(shell.computeSize(200, 200));

Beállítjuk a kitöltőszínt

Page 62: Nyílt Fejlesztőrendszerek SWT haladó komponensek

62Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region - felhasználásfinal Region region = new Region(display);

region.add(new int[]{0, 0, 200, 0, 200, 200});region.subtract(new Rectangle(75, 75, 50, 50));region.add(new int[]{25, 125, 75, 125, 75, 175});

shell.addListener(SWT.Paint, newListener() { public void handleEvent(Event event) { GC gc= event.gc; gc.setClipping(region); Rectangle rect= shell.getClientArea(); gc.setBackground(display.getSystemColor(

SWT.COLOR_CYAN)); gc.fillRectangle(0,0,rect.width,rect.height);}});shell.setSize(shell.computeSize(200, 200));

Festünk

Page 63: Nyílt Fejlesztőrendszerek SWT haladó komponensek

63Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region - eredmény

Page 64: Nyílt Fejlesztőrendszerek SWT haladó komponensek

64Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Region - példa

GC – clipping− Vágási terület, a rajzolás ezen hatásos

getClipping()setClipping(Region)setClipping(int, int, int, int)setClipping(Rectangle)setClipping(Region)

Page 65: Nyílt Fejlesztőrendszerek SWT haladó komponensek

65Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

FontData

FontData(String name, int size, int style)− Name: a font neve− Size: méret pont (1/72”)-ben− Style: NORMAL, ITALIC, BOLD, (BOLD | ITALIC)

Megkapható:− FontDialog− Device.getFontList(String name, boolean scalable)

● Skálázható font: bármely méretben használható● Bitmap font: csak az előre definiált méretekben

Page 66: Nyílt Fejlesztőrendszerek SWT haladó komponensek

66Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Font

Font (Device, FontData)− Adott eszközhöz kötött font− OS erőforrásokhoz kötődik!

GC-ben:− setFont(Font)− getFont()− getSystemFont() – alapértelmezett

Page 67: Nyílt Fejlesztőrendszerek SWT haladó komponensek

67Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Szöveg rajzolás

drawString(String,int,int,boolean)− Kiírja a szöveget az adott koordinátáktól

kezdődően− A boolean paraméter azt adja meg, hogy

átlátszó-e a háttér● Ha nem, akkor a szöveg körüli téglalapot kitölti a

háttérszínnel

Page 68: Nyílt Fejlesztőrendszerek SWT haladó komponensek

68Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Szöveg rajzolás

drawString(String,int,int,int style)− Kiírja a szöveget az adott koordinátáktól

kezdődően− Style paraméter

● SWT.DRAW_DELIMITER – a sortörés karakterek hatására új sort kezd

● SWT.DRAW_TAB - a tabulátor karaktereket értelmezi

● SWT.DRAW_MNEMONIC – az & után aláhúzott betűk (gyorsbillentyű)

● SWT.DRAW_TRANSPARENT – átlátszó háttér

Page 69: Nyílt Fejlesztőrendszerek SWT haladó komponensek

69Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

FontMetrics

Szöveg méreteinek meghatározása− Szöveg elrendezés, tördelés

Miért nem Font.getHeight() ?− Nem pixel, hanem pont− Néhány platform hazudik

Helyette: gc.getFontMetrics()− getHeight() – magasság (pixel)− getAscent() – betűmagasság− getDescend() – „lelógás”− getLeading() – ékezetek helye

Page 70: Nyílt Fejlesztőrendszerek SWT haladó komponensek

70Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

FontMetrics

Miért nem a Font tartalmazza a méretadatokat?− Minden GC-specifikus− Mindig az aktuális font metriáit kapjuk mega

gc-től.

Hátrány:− Amíg nincs GC, nem tudjuk megmérni a

magasságot…

Page 71: Nyílt Fejlesztőrendszerek SWT haladó komponensek

71Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Képek - ImageData

Egy kép leírásaImageData(String)ImageData(InputStream)

− Betöltés fájlból− Gif, Jpeg, PNG, BMP, ICO, TIFF

ImageData(int,int,int, PaletteData)− Új képet készít

Nincs OS erőforrás

Page 72: Nyílt Fejlesztőrendszerek SWT haladó komponensek

72Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Képek - ImageData

setPixel(int x, int y, int v) – pixel beállításasetPixels(int,int, int putW, int[] v) – pixelek

beállításagetPixels(int, int, int getW, int[] v) – pixelek

lekérdezésegetRGB(int) – RGB a színbőlgetPixel(RGB) – szín az RGB-bőlscaleTo(int, int) – adott méretre skálázás

Page 73: Nyílt Fejlesztőrendszerek SWT haladó komponensek

73Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Képek - PaletteData

A színformátum leírása egy képre− A színformátum lehet direkt, vagy palettás

PaletteData(RGB[])getPixel(RGB)Nincs OS erőforrás

Page 74: Nyílt Fejlesztőrendszerek SWT haladó komponensek

74Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Képek - Image

Image(Device, ImageData)− Kép az ImageData objektumból

Image(Device, int, int)− Üres, meg nem jelenő kép rajzoláshoz

Image(Device, String)− Kép betöltése közvetlenül fájlból

Image(Device, Image, int) – trafó végrehajtás− SWT.DISABLE, SWT.GRAY

OS szintű!

Page 75: Nyílt Fejlesztőrendszerek SWT haladó komponensek

75Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Képek - kirajzolás

A GC-bendrawImage(Image, int, int)

− Adott helyre

drawImage(Image,int,int,int,int,int,int,int,int)− A kép egy részének kirajzolása az adott

helyre

Page 76: Nyílt Fejlesztőrendszerek SWT haladó komponensek

76Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Kurzorok

Cursor(Device, int)− Előre definiált kurzorok− CURSOR_WAIT, CURSOR_HAND,

CURSOR_HELP, …− CURSOR_SIZExx -> átméretező alakú kurzor

● Többféle van(égtájak szerint)

Cursor(Device, ImageData, int, int)− Saját kurzor− A két int a hotspot helye (az aktív pont a

kurzorban)

Page 77: Nyílt Fejlesztőrendszerek SWT haladó komponensek

77Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Kurzorok használata 1.

NINCS dispose!

Page 78: Nyílt Fejlesztőrendszerek SWT haladó komponensek

78Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Kurzorok használata 2.

Használat után dispose kell!

Page 79: Nyílt Fejlesztőrendszerek SWT haladó komponensek

79Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Nyomtatás

Grafikus nyomtatás az operációs rendszerben telepített nyomtatókra

Nem minden platformon támogatott− Windows alatt biztosan megy

PrinterData – a nyomtató adatai− Printer.getPrinterList() – telepített nyomtatók− Printer.getDefaultPrinterData() –

alapértelmezett− PrintDialog.open() – felhasználó választhat

Page 80: Nyílt Fejlesztőrendszerek SWT haladó komponensek

80Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Nyomtatás

A PrintData-ból egy Printer objektumot készítünk.

startJob(String) … endJob() – nyomtatásGrafikus erőforrások, mint a képernyő

eseténRajzolás a Printer GC-jére, a szokásos

módonstartPage() … endPage() - lapozás

Page 81: Nyílt Fejlesztőrendszerek SWT haladó komponensek

81Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Page 82: Nyílt Fejlesztőrendszerek SWT haladó komponensek

82Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Alapértelmezett nyomtató

Page 83: Nyílt Fejlesztőrendszerek SWT haladó komponensek

83Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Printer objektum létrehozása

Page 84: Nyílt Fejlesztőrendszerek SWT haladó komponensek

84Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Job indítása

Page 85: Nyílt Fejlesztőrendszerek SWT haladó komponensek

85Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Szín előkészítés (piros)

Page 86: Nyílt Fejlesztőrendszerek SWT haladó komponensek

86Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Kiszámítjuk a nyomtatható méretet

Page 87: Nyílt Fejlesztőrendszerek SWT haladó komponensek

87Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Lekérdezzük a felbontást

Page 88: Nyílt Fejlesztőrendszerek SWT haladó komponensek

88Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Elhagyunk egy inchet a baloldaltól (margó)

Page 89: Nyílt Fejlesztőrendszerek SWT haladó komponensek

89Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Elhagyunk fél inchet a lap tetejétől (margó)

Page 90: Nyílt Fejlesztőrendszerek SWT haladó komponensek

90Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Létrehozzuk a GC-t

Page 91: Nyílt Fejlesztőrendszerek SWT haladó komponensek

91Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Elindítjuk az első lapot

Page 92: Nyílt Fejlesztőrendszerek SWT haladó komponensek

92Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Kiírjuk a stringet

Page 93: Nyílt Fejlesztőrendszerek SWT haladó komponensek

93Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Pirossal bekeretezzük a stringet

Page 94: Nyílt Fejlesztőrendszerek SWT haladó komponensek

94Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Vége az oldalnak

Page 95: Nyílt Fejlesztőrendszerek SWT haladó komponensek

95Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Vége a jobnak

Page 96: Nyílt Fejlesztőrendszerek SWT haladó komponensek

96Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Minta

PrinterData data = Printer.getDefaultPrinterData();Printer printer = new Printer(data);if(printer.startJob("SWTPrinting Example")) {

Color red = printer.getSystemColor(SWT.COLOR_RED);Rectangle trim = printer.computeTrim(0, 0, 0, 0);Point dpi = printer.getDPI();int left = dpi.x + trim.x; // 1”from left side of paperint top = dpi.y / 2 + trim.y; // ½”from top edge of p.GC gc= new GC(printer);if(printer.startPage()) {

String testString= "Hello World!";Point extent = gc.stringExtent(testString);gc.drawString(testString, left,top +

gc.getFont().getFontData()[0].getHeight());

gc.setForeground(red);gc.drawRectangle(left, top, extent.x, extent.y);

printer.endPage();}gc.dispose();printer.endJob();}

printer.dispose();

Eldobjuk a printert (erőforrások felszabadítása)

Page 97: Nyílt Fejlesztőrendszerek SWT haladó komponensek

97Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

SWT - összefoglalás

Natív grafikus keretrendszer− Gyors− Egyszerű− Nincsenek benne nagyon extra dolgok…

Lehetőséget ad− Dialógusok− Menük− Komplett alkalmazások elkészítésére− Nyomtatási feladatok megoldására

Kiterjesztés: JFace