Swt J Face 1/3
Upcoming SlideShare
Loading in...5
×
 

Swt J Face 1/3

on

  • 3,699 views

 

Statistics

Views

Total Views
3,699
Views on SlideShare
3,418
Embed Views
281

Actions

Likes
3
Downloads
102
Comments
5

8 Embeds 281

http://hangumkj.blogspot.com 132
http://hangumkj.blogspot.kr 87
http://jazzlab.net 45
http://www.slideshare.net 6
http://static.slidesharecdn.com 4
http://www.jazzlab.net 4
http://hangumkj.blogspot.jp 2
http://www.linkedin.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…

  • Are you sure you want to
    Your message goes here
    Processing…

  • Are you sure you want to
    Your message goes here
    Processing…
  • 한금님 가져갑니다 ~
    Are you sure you want to
    Your message goes here
    Processing…

  • Are you sure you want to
    Your message goes here
    Processing…

  • Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • http://en.wikipedia.org/wiki/Standard_Widget_Toolkit

Swt J Face 1/3 Swt J Face 1/3 Presentation Transcript

  • SWT에 대해 SWT/JFace 조현종(V0.9, 14/05/11) http://cafe.naver.com/eclipseplugin http://hangumkj.blogspot.com/ hangum@gmail.com
  • 목 차  SWT는?  HelloWorld 예제  WindowBuilder 소개  SWT 주요 Package  Dialog  Widget  Event  Layout  Nebulra project  팀 만들기  실습  참고자료
  • SWT는?  SWT?(StandardWidgetToolkit) - IBM의 Stephen Northover에 의해 개발. - SWT 버전 3.8.2(4.2.2) – 2013 - OS에 최적화 된 native library 제공 Windows, Linux, Unix, Mac OS - www.eclipse.org/swt
  • Hello World 예제? public static void main(String args[]) { Display display = new Display(); // 1 Shell shell = new Shell(display); // 2 shell.setText("Hello World"); // 3 shell.setSize(300, 300); // 4 shell.open(); // 5 while (!shell.isDisposed()) // 6 if (!display.readAndDispatch()) // 7 display.sleep(); // 8 display.dispose(); // 9 }
  • Hello World 예제? 1) Display? 1) GUI 상태를 유지해주고 OS와 통신 2) Event에 대한 처리 및 관련된 곳에 전달 3) System 상수 정의. 2) Shell? 1) GUI의 최상의 윈도우 2) 시각적인 부분을 구현(Container,Widget, event 와 GUI를 연동하기 위한 연결고리) Widget/Control/Composite ShellClass Display SWTOS Class, JNI SystemOS
  • Hello World 예제? 3) Shell의Title를 ‘HelloWorld’로 설정 4) Shell Size를 300, 300으로 설정 5) Shell을 오픈한다. 6) Shell이 종료 되지 않았으면 7) System event를 읽어서 관련 event전달 8) Event가 있을때까지 sleep 9) Display를 종료하고 프로그램을 종료한다.
  • Hello World 예제? 작업환경? 1. Eclipse 4.2 SR1 (SWT 3. 1) 2. Java Project 생성 1. classpath설정(org.eclipse.swt.win32.win32.x86_3.100.1.v4234e.jar) 3. SWT DESIGNER (http://www.instantiations.com/windowbuilder/swtdesigner/index.html)
  • Window Builder  Java GUI designer https://developers.google.com/java-dev-tools/wbpro/
  • SWT 주요 Package소개 Package명 기능 org.eclipse.swt 상수와 예외값들이 정의 SWT, SWTException, SWTError org.eclipse.swt.widgets Wedget, Component 및 관련 Interface org.eclipse.swt.events 이벤트, 리스너, 이벤트 타입정의 org.eclipse.swt.dnd Drag and Drop 정의 org.eclipse.swt.layout Layout 정의 org.eclipse.swt.graphics 그래픽관련 정의 org.eclipse.swt.browser org.eclipse.swt.internal org.eclipse.swt.opengl ** Internal package는 외부에서 클래스를 볼 수(?) 없습니다.
  • Widget 소개
  • Widget 소개
  • Widget 소개
  • Widget 소개
  • Widget 소개
  • Text Widget
  • Button Widget
  • Label Widget
  • Layout (만든 콘트롤을 어디다 놓을것인지, 어떤 모양으 로?)
  • Layout 소개 영역을 나누는 방식 FillLayout, RowLayout, GridLayout 콘트롤을 붙이는 방식 FormLayout 한번에 하나의 콘트롤 보여지는 방식 StackLayout
  • Layout 소개  FillLayout setLayout(new FillLayout(SWT.VERTICAL)); Label lblNewLabel_2 = new Label(this, SWT.BORDER); lblNewLabel_2.setTouchEnabled(true); lblNewLabel_2.setText("New Label"); Label lblNewLabel_1 = new Label(this, SWT.BORDER); lblNewLabel_1.setText("New Label"); Label lblNewLabel = new Label(this, SWT.BORDER); lblNewLabel.setText("New Label"); setLayout(new FillLayout(SWT.HORIZONTAL));
  • Layout 소개  RowLayout shell.setLayout(new RowLayout()); - 주요 Property wrap : 기본값은 true 이며, 한줄로 유지 하고 싶을 경우에 false pack : 기본값은 true이며, 기본 contorl이 모두 justfy : 기본 값은 false이며, 부모 콘트롤 전반적으로 균등하게 배치 - RowData(Width, Height) 특정Widget의 width, height를 정의 해 줄수 있습니다.
  • Layout 소개  GridLayout final Shell shell = new Shell(); final GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 3; shell.setLayout(gridLayout); - GridData 특정Widget의 정렬방식 및 영역 채우기 등의 방법을 지정합니다.
  • Layout 소개  FormLayout shell.setLayout (new FormLayout();); Button button1 = new Button(shell, SWT.PUSH); Button button2 = new Button(shell, SWT.PUSH); Button button3 = new Button(shell, SWT.PUSH); button1.setText("B1"); button2.setText("B2"); button3.setText("B3"); FormData data1 = new FormData(); data1.left = new FormAttachment(0,5); data1.right = new FormAttachment(25,0); button1.setLayoutData(data1); FormData data2 = new FormData(); data2.left = new FormAttachment(button1,5); data2.right = new FormAttachment(90,-5); button2.setLayoutData(data2); FormData data3 = new FormData(); data3.top = new FormAttachment(button2,5); data3.bottom = new FormAttachment(100,-5); data3.right = new FormAttachment(100,-5); data3.left = new FormAttachment(25,5); button3.setLayoutData(data3);
  • Layout 소개  StackLayout?
  • Event 소개 Object EventObject SWTEventObject DragSourceEvent DragTargetEvent FocusEvent HelpEvent KeyEvent ModifyEvent MouseEvent SelectionEvent TextChangedEvent 운영체 제 Event Queue Display 최상위 Shell Widjet Listener Interface Event 호출 메소드 메시지 이벤트 이벤트 호출 http://www.informit.com/articles/article.aspx?p=354574&seqNum=3
  • Event 소개  Adapter & Listener Adapter Listener ControlAdapter ControlListener FocusAdapter FocusListener KeyAdapter KeyListener MenuAdapter MenuListener MouseAdapter MouseListener SelectionAdapter SelectionListener ShellAdapter ShellLIstener TreeAdapter TreeListener button.addMouseListener(new MouseListener() { ………………….. button.addMouseListener(new MouseAdapter() { …………………..
  • Event 소개  Adapter  Listener
  • TabFolder 생성 finalTabFolder tabFolder = newTabFolder(this, SWT.NONE); Item 생성 finalTabItem firsttabTabItem = newTabItem(tabFolder, SWT.NONE); firsttabTabItem.setText("firstTab"); 데이터입력 final Composite firstTabComposite = new Composite(tabFolder, SWT.NONE); final GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 2; firstTabComposite.setLayout(gridLayout); firsttabTabItem.setControl(firstTabComposite);
  • Table 생성 table = new Table(this, SWT.FULL_SELECTION | SWT.VIRTUAL); 컬럼 생성 finalTableColumn newColumnTableColumn = newTableColumn(table, SWT.NONE); newColumnTableColumn.setWidth(130); newColumnTableColumn.setText("이름"); 데이터 입력 TableItem ti = newTableItem(table, SWT.NONE); ti.setText(j, "Row " + i + ", Column " + j);
  • Tree 생성 tree = newTree(this, SWT.BORDER); Item 생성 TreeItem child1 = newTreeItem(tree, SWT.NONE, 0); 데이터 입력 child1.setText("Shell");
  • TreeTable 생성 Tree tree = newTree(shell, SWT.BORDER); 컬럼 생성 TreeColumn column1 = newTreeColumn(tree, SWT.LEFT); column1.setText("Column 1"); column1.setWidth(200); 데이터 입력 for (int i = 0; i < 4; i++) { TreeItem item = newTreeItem(tree, SWT.NONE); item.setText(new String[] { "item " + i, "abc", "defghi" }); for (int j = 0; j < 4; j++) { TreeItem subItem = new TreeItem(item, SWT.NONE); subItem.setText(new String[] { "subitem " + j, "jklmnop", "qrs" });
  • Dialog 소개  Object  Dialog  ColorDialog  DirectoryDialog  FileDialog  FontDialog  MessageDialog  PrintDialog
  • Dialog 소개 ColorDialog? DirectoryDialog? DirectoryDialog dlg = new DirectoryDialog(shell); dlg.setFilterPath(text.getText()); dlg.setText("SWT's DirectoryDialog"); dlg.setMessage("Select a directory"); String dir = dlg.open(); if (dir != null) { … } ColorDialog dlg = new ColorDialog(shell); dlg.setRGB(colorLabel.getBackground().getRGB()); dlg.setText("Choose a Color"); RGB rgb = dlg.open(); if (rgb != null) { …… }
  • Dialog 소개 FileDialog? FontDialog? FontDialog fd = new FontDialog(s,SWT.NONE); fd.setText("Select Font"); fd.setRGB(new RGB(0, 0, 255)); FontData defaultFont = new FontData("Courier", 10, S WT.BOLD); fd.setFontData(defaultFont); FontData newFont = fd.open(); if (newFont != null) { …. } FileDialog fd = new FileDialog(s,SWT.OPEN); fd.setText("Open"); fd.setFilterPath("C:/"); String[] filterExt = { "*.txt", "*.doc", ".rtf", "*.*" }; fd.setFilterExtensions(filterExt); String selected = fd.open();
  • Dialog 소개 MessageDialog? PrintDialog? PrintDialog printDialog = new PrintDialog(s,SWT.NON E); printDialog.setText("Print"); PrinterData printerData = printDialog.open(); MessageBox messageBox = new MessageBox(shell, SWT.OK | SWT.CANCEL | SWT.ICON_WARNING); messageBox.setText("Hello, World"); messageBox.setMessage("Hello, World"); messageBox.open();
  • Integration AWT and Swing http://www.eclipse.org/articles/article.php?file =Article-Swing-SWT-Integration/index.html
  • Integration MS OLD http://www.vogella.com/tutorials/EclipseMicro softIntegration/article.html
  • Nebulra Project
  • Nebulra Project
  • Nebulra Project
  • Nebulra Project
  • 실습 예제데이터(cvs) 이름,나이,전화번호,주소 톰,47,010-1234-1235,미국헐리우드 제리,48,010-1234-1234,한국 놀부,500,02-1234-1231,한국 흥부,498,02-2345-3456,한국 초기화면이 로드되면 아래의 예제 데이터가 로드 된다. 이름에 값을 입력하고 검색 버튼을 누르면 이 름으로 테이블에 있는 데이터를 검색하고 데 이터가 있다면 선택한 다 아래 선택 버튼을 클릭 하면 선택팝업이 뜨면 서 상세정보출력한다
  • 참고자료 http://www.eclipse.org/swt http://www.cs.umanitoba.ca/~eclipse/ http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/eclipse/docum ents/SWT http://www.ibm.com/developerworks/kr/library/os-swingswt/ http://www.developer.com/java/other/article.php/3340621 http://www.developer.com/design/article.php/10925_3330861_1 http://www.eclipse.org/nebula/ http://www.java2s.com