1 / 97

Nyílt Fejlesztőrendszerek SWT haladó komponensek

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

melora
Download Presentation

Nyílt Fejlesztőrendszerek SWT haladó komponensek

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Nyílt FejlesztőrendszerekSWT haladó komponensek

  2. SWT eddig • Alapvetések • natív • Építőelemek • Eseménykezelés • Komponensek • Ablak • Gomb • Text • …

  3. SWT haladó • Komplex komponensek • *Bar • Tree • Table • … • Rajzolás • Nyomtatás

  4. SWT haladó • Komplex komponensek • *Bar • Tree • Table • … • Rajzolás • Nyomtatás

  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()

  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)

  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ó

  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ó

  9. Toolbar példa – menü dropdown finalToolBartoolBar= newToolBar(shell, SWT.HORIZONTAL); finalToolItemitem = newToolItem(toolBar, SWT.DROP_DOWN); item.setImage(createToolIcon(display, "run")); finalMenu menu = newMenu(shell, SWT.POP_UP); for(inti = 0; i < 8; i++) { newMenuItem(menu, SWT.PUSH).setText("Item"+ i);} item.addSelectionListener(newSelectionAdapter() { publicvoidwidgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = newPoint(event.x, event.y); point = display.map(toolBar, null, point); menu.setLocation(point); menu.setVisible(true); }}});

  10. Toolbar példa – menü dropdown finalToolBartoolBar= newToolBar(shell, SWT.HORIZONTAL); finalToolItemitem = newToolItem(toolBar, SWT.DROP_DOWN); item.setImage(createToolIcon(display, "run")); finalMenu menu = newMenu(shell, SWT.POP_UP); for(inti = 0; i < 8; i++) { newMenuItem(menu, SWT.PUSH).setText("Item"+ i);} item.addSelectionListener(newSelectionAdapter() { publicvoidwidgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = newPoint(event.x, event.y); point = display.map(toolBar, null, point); menu.setLocation(point); menu.setVisible(true); }}}); ToolBar és ToolItem létrehozása

  11. Toolbar példa – menü dropdown finalToolBartoolBar= newToolBar(shell, SWT.HORIZONTAL); finalToolItemitem = newToolItem(toolBar, SWT.DROP_DOWN); item.setImage(createToolIcon(display, "run")); finalMenu menu = newMenu(shell, SWT.POP_UP); for(inti = 0; i < 8; i++) { newMenuItem(menu, SWT.PUSH).setText("Item"+ i);} item.addSelectionListener(newSelectionAdapter() { publicvoidwidgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = newPoint(event.x, event.y); point = display.map(toolBar, null, point); menu.setLocation(point); menu.setVisible(true); }}}); Menü létrehozása

  12. Toolbar példa – menü dropdown finalToolBartoolBar= newToolBar(shell, SWT.HORIZONTAL); finalToolItemitem = newToolItem(toolBar, SWT.DROP_DOWN); item.setImage(createToolIcon(display, "run")); finalMenu menu = newMenu(shell, SWT.POP_UP); for(inti = 0; i < 8; i++) { newMenuItem(menu, SWT.PUSH).setText("Item"+ i);} item.addSelectionListener(newSelectionAdapter() { publicvoidwidgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = newPoint(event.x, event.y); point = display.map(toolBar, null, point); menu.setLocation(point); menu.setVisible(true); }}}); Menü elemek létrehozása

  13. Toolbar példa – menü dropdown finalToolBartoolBar= newToolBar(shell, SWT.HORIZONTAL); finalToolItemitem = newToolItem(toolBar, SWT.DROP_DOWN); item.setImage(createToolIcon(display, "run")); finalMenu menu = newMenu(shell, SWT.POP_UP); for(inti = 0; i < 8; i++) { newMenuItem(menu, SWT.PUSH).setText("Item"+ i);} item.addSelectionListener(newSelectionAdapter() { publicvoidwidgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = newPoint(event.x, event.y); point = display.map(toolBar, null, point); menu.setLocation(point); menu.setVisible(true); }}}); ToolItem esemény-kezelő írása

  14. Toolbar példa – menü dropdown finalToolBartoolBar= newToolBar(shell, SWT.HORIZONTAL); finalToolItemitem = newToolItem(toolBar, SWT.DROP_DOWN); item.setImage(createToolIcon(display, "run")); finalMenu menu = newMenu(shell, SWT.POP_UP); for(inti = 0; i < 8; i++) { newMenuItem(menu, SWT.PUSH).setText("Item"+ i);} item.addSelectionListener(newSelectionAdapter() { publicvoidwidgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = newPoint(event.x, event.y); point = display.map(toolBar, null, point); menu.setLocation(point); menu.setVisible(true); }}}); SWT.ARROW jelzi, hogy a kinyitásra kattintottak

  15. Toolbar példa – menü dropdown finalToolBartoolBar= newToolBar(shell, SWT.HORIZONTAL); finalToolItemitem = newToolItem(toolBar, SWT.DROP_DOWN); item.setImage(createToolIcon(display, "run")); finalMenu menu = newMenu(shell, SWT.POP_UP); for(inti = 0; i < 8; i++) { newMenuItem(menu, SWT.PUSH).setText("Item"+ i);} item.addSelectionListener(newSelectionAdapter() { publicvoidwidgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = newPoint(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á

  16. Toolbar példa – menü dropdown finalToolBartoolBar= newToolBar(shell, SWT.HORIZONTAL); finalToolItemitem = newToolItem(toolBar, SWT.DROP_DOWN); item.setImage(createToolIcon(display, "run")); finalMenu menu = newMenu(shell, SWT.POP_UP); for(inti = 0; i < 8; i++) { newMenuItem(menu, SWT.PUSH).setText("Item"+ i);} item.addSelectionListener(newSelectionAdapter() { publicvoidwidgetSelected(SelectionEventevent) { if(event.detail == SWT.ARROW) { Point point = newPoint(event.x, event.y); point = display.map(toolBar, null, point); menu.setLocation(point); menu.setVisible(true); }}}); Menü megjelenítése

  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()

  18. Coolbar példa – nyomógomb final CoolBar coolBar= new CoolBar(window, SWT.BORDER); final CoolItem item = newCoolItem(coolBar, SWT.NONE); Button butt = newButton(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);

  19. Coolbar példa – nyomógomb final CoolBar coolBar= new CoolBar(window, SWT.BORDER); final CoolItem item = newCoolItem(coolBar, SWT.NONE); Button butt = newButton(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

  20. Coolbar példa – nyomógomb final CoolBar coolBar= new CoolBar(window, SWT.BORDER); final CoolItem item = newCoolItem(coolBar, SWT.NONE); Button butt = newButton(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

  21. Coolbar példa – nyomógomb final CoolBar coolBar= new CoolBar(window, SWT.BORDER); final CoolItem item = newCoolItem(coolBar, SWT.NONE); Button butt = newButton(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

  22. Coolbar példa – nyomógomb final CoolBar coolBar= new CoolBar(window, SWT.BORDER); final CoolItem item = newCoolItem(coolBar, SWT.NONE); Button butt = newButton(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

  23. Coolbar példa – nyomógomb final CoolBar coolBar= new CoolBar(window, SWT.BORDER); final CoolItem item = newCoolItem(coolBar, SWT.NONE); Button butt = newButton(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

  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!

  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

  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

  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

  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[])

  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

  30. Table példa Table table = newTable(shell, SWT.BORDER); table.setHeaderVisible(true); for(inti = 0; i < 4; i++) { TableColumncolumn = newTableColumn(table,SWT.NONE); column.setText("Column"+ i);} for(inti = 0; i < 5; i++) { TableItemitem = newTableItem(table, SWT.NULL); for(intj = 0; j < 4; j++) { item.setText(j, "Item "+ i + "-"+ j);}} for(inti = 0; i < 4; i++){table.getColumn(i).pack();} table.pack();

  31. Table példa Table table = newTable(shell, SWT.BORDER); table.setHeaderVisible(true); for(inti = 0; i < 4; i++) { TableColumncolumn = newTableColumn(table,SWT.NONE); column.setText("Column"+ i);} for(inti = 0; i < 5; i++) { TableItemitem = newTableItem(table, SWT.NULL); for(intj = 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

  32. Table példa Table table = newTable(shell, SWT.BORDER); table.setHeaderVisible(true); for(inti = 0; i < 4; i++) { TableColumncolumn = newTableColumn(table,SWT.NONE); column.setText("Column"+ i);} for(inti = 0; i < 5; i++) { TableItemitem = newTableItem(table, SWT.NULL); for(intj = 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

  33. Table példa Table table = newTable(shell, SWT.BORDER); table.setHeaderVisible(true); for(inti = 0; i < 4; i++) { TableColumncolumn = newTableColumn(table,SWT.NONE); column.setText("Column"+ i);} for(inti = 0; i < 5; i++) { TableItemitem = newTableItem(table, SWT.NULL); for(intj = 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

  34. Table példa Table table = newTable(shell, SWT.BORDER); table.setHeaderVisible(true); for(inti = 0; i < 4; i++) { TableColumncolumn = newTableColumn(table,SWT.NONE); column.setText("Column"+ i);} for(inti = 0; i < 5; i++) { TableItemitem = newTableItem(table, SWT.NULL); for(intj = 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

  35. Table példa Table table = newTable(shell, SWT.BORDER); table.setHeaderVisible(true); for(inti = 0; i < 4; i++) { TableColumncolumn = newTableColumn(table,SWT.NONE); column.setText("Column"+ i);} for(inti = 0; i < 5; i++) { TableItemitem = newTableItem(table, SWT.NULL); for(intj = 0; j < 4; j++) { item.setText(j, "Item "+ i + "-"+ j);}} for(inti = 0; i < 4; i++){table.getColumn(i).pack();} table.pack(); „csomagolás”

  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()

  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

  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

  39. Widget-ek – ami kimarad • Combo • Group • List • ProgressBar • ScrollBar • Scale, Slider, Spinner, • TableTree – tábla az első oszlopban tree • …

  40. Widget-ek – ami kimarad • Combo • Group • List • ProgressBar • ScrollBar • Scale, Slider, Spinner, • TableTree – tábla az első oszlopban tree • …

  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

  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!

  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)

  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()

  45. Grafika • Ha saját widget kell… • Ha rajzolni szeretnénk • Grafika • alapok • eseménykezelés • nyomtatás

  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

  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)

  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

  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

  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)

More Related