View
36
Download
1
Category
Preview:
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
Budapest University of Technology and Economics
Fault-tolerant Systems Research Group
Nyílt FejlesztőrendszerekSWT 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− …
3Budapest University of Technology and Economics
Fault-tolerant Systems Research Group
SWT haladó
Komplex komponensek− *Bar− Tree− Table− …
RajzolásNyomtatás
4Budapest University of Technology and Economics
Fault-tolerant Systems Research Group
SWT haladó
Komplex komponensek− *Bar− Tree− Table− …
RajzolásNyomtatás
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()
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)
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ó
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ó
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);}}});
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
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
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
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
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
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á
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
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()
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);
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
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
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
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
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
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!
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
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
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
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[])
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
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();
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
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
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
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
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”
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()
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
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
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…
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…
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
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!
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)
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()
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
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
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)
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
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
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)
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
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ó
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!
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));
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
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
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
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
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
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
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
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
63Budapest University of Technology and Economics
Fault-tolerant Systems Research Group
Region - eredmény
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)
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
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
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
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
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
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…
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
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
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
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ű!
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
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)
77Budapest University of Technology and Economics
Fault-tolerant Systems Research Group
Kurzorok használata 1.
NINCS dispose!
78Budapest University of Technology and Economics
Fault-tolerant Systems Research Group
Kurzorok használata 2.
Használat után dispose kell!
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
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
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();
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ó
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
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
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)
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
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
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ó)
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ó)
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
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
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
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
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
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
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)
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
Recommended