Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek SWT haladó komponensek
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 2 SWT eddig Alapvetések −natív −Építőelemek −Eseménykezelés Komponensek −Ablak −Gomb −Text −…
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 3 SWT haladó Komplex komponensek −*Bar −Tree −Table −… Rajzolás Nyomtatás
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 4 SWT haladó Komplex komponensek −*Bar −Tree −Table −… Rajzolás Nyomtatás
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 5 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()
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 6 Toolbar new ToolBar(parent, SWT.HORIZONTAL) Eszközkészlet megjelenítése Stílusok −HORIZONTAL, VERTICAL −WRAP, FLAT, RIGHT −SHADOW_OUT Események: nincs Metódusok: getItems(), getItem(int)
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 7 ToolItem new ToolItem(toolbar,stílus) Stílusok −PUSH, RADIO, DROP_DOWN, SEPARATOR,CHECK Az API hasonlít a Button-éhoz SEPARATOR esetén a szélesség (setWidth(int)) beállítható
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 8 ToolItem new ToolItem(toolbar,stílus) Stílusok −PUSH, RADIO, DROP_DOWN, SEPARATOR,CHECK Az API hasonlít a Button-éhoz SEPARATOR esetén a szélesség (setWidth(int)) beállítható
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 9 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); }}});
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 10 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 11 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 12 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 13 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 14 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 15 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á
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 16 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 17 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()
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 18 Coolbar példa – nyomógomb final 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);
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 19 Coolbar példa – nyomógomb final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 20 Coolbar példa – nyomógomb final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 21 Coolbar példa – nyomógomb final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 22 Coolbar példa – nyomógomb final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 23 Coolbar példa – nyomógomb final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 24 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!
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 25 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 26 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 27 Table Egyszerű táblázat new 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 28 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[])
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 29 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 30 Table példa Table 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();
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 31 Table példa Table 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 32 Table példa Table 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 33 Table példa Table 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 34 Table példa Table 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 35 Table példa Table 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”
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 36 Browser new Browser(parent, SWT.NONE) Az operációs rendszer böngészőjét használja Események: Show, Hide, Open, Close, (URL)Changed, … Metódusok −setURL(String) −setText(String) −back(), forward(), stop()
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 37 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 38 TabItem new TabItem(folder, SWT.NONE) Egy lapot jelképez Metódusok −setText() - fül felirat −setImage() – fül kép −setToolTipText() – tool tipp −setControl() – a kontroll, mely az item területét elfoglalja
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 39 Widget-ek – ami kimarad Combo Group List ProgressBar ScrollBar Scale, Slider, Spinner, TableTree – tábla az első oszlopban tree …
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 40 Widget-ek – ami kimarad Combo Group List ProgressBar ScrollBar Scale, Slider, Spinner, TableTree – tábla az első oszlopban tree …
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 41 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 42 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!
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 43 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)
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 44 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()
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 45 Grafika Ha saját widget kell… Ha rajzolni szeretnénk Grafika −alapok −eseménykezelés −nyomtatás
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 46 Koordináta-rendszer Origó a bal felső sarok (0,0) Minden távolság pixelben adott Jobbra és lefelé növekszik Jobbró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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 47 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)
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 48 GraphicsContext - GC Interfész a platform grafikus rendszeréhez Tartalmazza 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 49 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 50 Rajzolás - vonalak drawLine(int,int,int,int) – egyszerű vonal drawPolyLine(int[] xyArray) – pont pár – sorozattal törtvonal rajzolása drawPolygon(int[] xyArray) – mint az előző, de a végén lezárja (utolsó párból az elsőig)
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 51 Rajzolás - alakzatok drawRectangle(int,int,int,int) – téglalap drawRoundRectangle(int,int,int,int,int,int) – Lekerekített téglalap drawOval(int,int,int,int) – ellipszis drawArc(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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 52 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ó
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 53 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!
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 54 Region - felhasználás final 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));
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 55 Region - felhasználás final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 56 Region - felhasználás final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 57 Region - felhasználás final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 58 Region - felhasználás final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 59 Region - felhasználás final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 60 Region - felhasználás final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 61 Region - felhasználás final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 62 Region - felhasználás final 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 63 Region - eredmény
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 64 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)
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 65 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 66 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 67 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 68 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 69 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 70 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…
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 71 Képek - ImageData Egy kép leírása ImageData(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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 72 Képek - ImageData setPixel(int x, int y, int v) – pixel beállítása setPixels(int,int, int putW, int[] v) – pixelek beállítása getPixels(int, int, int getW, int[] v) – pixelek lekérdezése getRGB(int) – RGB a színből getPixel(RGB) – szín az RGB-ből scaleTo(int, int) – adott méretre skálázás
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 73 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 74 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ű!
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 75 Képek - kirajzolás A GC-ben drawImage(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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 76 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)
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 77 Kurzorok használata 1. NINCS dispose!
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 78 Kurzorok használata 2. Használat után dispose kell!
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 79 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 80 Nyomtatás A PrintData-ból egy Printer objektumot készítünk. startJob(String) … endJob() – nyomtatás Grafikus erőforrások, mint a képernyő esetén Rajzolás a Printer GC-jére, a szokásos módon startPage() … endPage() - lapozás
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 81 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 paper int 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();
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 82 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 paper int 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ó
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 83 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 paper int 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 84 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 paper int 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 85 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 paper int 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)
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 86 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 paper int 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 87 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 paper int 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 88 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 paper int 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ó)
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 89 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 paper int 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ó)
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 90 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 paper int 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 91 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 paper int 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 92 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 paper int 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 93 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 paper int 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 94 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 paper int 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 95 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 paper int 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
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 96 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 paper int 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)
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 97 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