JavaTM Platform
Standard Ed. 6

javax.swing
클래스 JSpinner

java.lang.Object 
  상위를 확장 java.awt.Component 
      상위를 확장 java.awt.Container 
          상위를 확장 javax.swing.JComponent 
              상위를 확장 javax.swing.JSpinner
모든 구현된 인터페이스:
ImageObserver , MenuContainer , Serializable , Accessible


public class JSpinner
extends JComponent
implements Accessible

사용자가, 순서 붙일 수 있었던 순서로부터 수 또는 객체를 선택할 수 있도록(듯이) 하는 단일행의 입력 필드입니다. 일반적으로, 스피나-는 순서의 요소간을 이동하기 위한 작은 화살표 버튼의 페어를 제공합니다. 키보드상/하 커서 키에서도 요소간을 자유롭게 이동할 수 있습니다. 사용자가 스피나-에 직접 (유효한) 치를 입력할 수도 있습니다. combobox는 유사한 기능을 제공합니다만, 중요한 데이터를 덮어 가려 버리는 드롭 다운 리스트를 필요로 하지 않기 때문에, 스피나- 쪽이 선호되는 경우가 있습니다.  

JSpinner 의 순서의 값은,SpinnerModel 에 의해 정의됩니다. model 는, 생성자 의 인수로서 지정해,model 프로퍼티을 사용해 변경할 수 있습니다. 일부의 공통의 형태로서SpinnerListModel,SpinnerNumberModel, 및 SpinnerDateModel 등의 SpinnerModel 클래스가 제공됩니다.  

JSpinner 는, 모델의 현재의 요소 또는 「값」을 표시해, 변경도 취급하는 단일의 아이 컴퍼넌트를 가집니다. 이것은 editor 로 불립니다. 에디터는,JSpinner 의 생성자 에 의해 작성되어editor 프로퍼티에 의해 변경할 수 있습니다. JSpinner 의 에디터는,ChangeEvent 를 대기하는 것으로써, 모델과의 동기를 유지합니다. 사용자가 editor 에 의해 표시된 값을 변경하면(자),model 의 값과 editor 의 값이 달라 버릴 가능성이 있습니다. model 의 값이 에디터의 값과 같은가 어떤가를 확인하려면 ,commitEdit 메소드를 사용합니다. 다음에 예를 나타냅니다.

   try {
       spinner.commitEdit();
   }
   catch (ParseException pe) {{
       // Edited value is invalid, spinner.getValue() will return
       // the last valid value, you could revert the spinner to show that:
       JComponent editor = spinner.getEditor()
       if (editor instanceof DefaultEditor) {
           ((DefaultEditor) editor). getTextField(). setValue(spinner.getValue();
       }
       // reset the value to some known value:
       spinner.setValue(fallbackValue);
       // or treat the last valid value as the current, in which
       // case you don't need to do anything.
   }
   return spinner.getValue();
 

스피나-의 사용 방법의 상세와 예에 대해서는, 「The Java Tutorial」의「How to Use Spinners」를 참조해 주세요.  

경고: Swing 는 thread에 대해서 안전하지는 않습니다. 자세한 것은,「Swing's Threading Policy」를 참조해 주세요.  

경고: 이 클래스의 직렬화 된 객체는, 향후의 Swing 릴리스와 호환은 아니게 될 예정입니다. 현재의 직렬화의 지원는, 단기간의 운용이나, 같은 버젼의 Swing 를 실행하는 어플리케이션간의 RMI 에 적절하고 있습니다. JDK Version 1.4 이후, 모든 JavaBeans 의 장기간의 운용 지원는,java.beans 패키지에 추가되고 있습니다. 자세한 것은,XMLEncoder 를 참조해 주세요.

도입된 버젼:
1.4
관련 항목:
SpinnerModel , AbstractSpinnerModel , SpinnerListModel , SpinnerNumberModel , SpinnerDateModel , JFormattedTextField

상자의 클래스의 개요
protected  class JSpinner.AccessibleJSpinner
          AccessibleJSpinnerJSpinner 클래스용의 접근성? 지원를 구현합니다.
static class JSpinner.DateEditor
          모델이 SpinnerDateModelJSpinner 용의 에디터입니다.
static class JSpinner.DefaultEditor
          특수한 에디터용의 간단한 base class입니다.
static class JSpinner.ListEditor
          모델이 SpinnerListModelJSpinner 용의 에디터입니다.
static class JSpinner.NumberEditor
          모델이 SpinnerNumberModelJSpinner 용의 에디터입니다.
 
클래스 javax.swing. JComponent 로부터 상속된 상자의 클래스/인터페이스
JComponent.AccessibleJComponent
 
클래스 java.awt. Container 로부터 상속된 상자의 클래스/인터페이스
Container.AccessibleAWTContainer
 
클래스 java.awt. Component 로부터 상속된 상자의 클래스/인터페이스
Component.AccessibleAWTComponent , Component.BaselineResizeBehavior , Component.BltBufferStrategy , Component.FlipBufferStrategy
 
필드의 개요
 
클래스 javax.swing. JComponent 로부터 상속된 필드
accessibleContext , listenerList , TOOL_TIP_TEXT_KEY , ui , UNDEFINED_CONDITION , WHEN_ANCESTOR_OF_FOCUSED_COMPONENT , WHEN_FOCUSED , WHEN_IN_FOCUSED_WINDOW
 
클래스 java.awt. Component 로부터 상속된 필드
BOTTOM_ALIGNMENT , CENTER_ALIGNMENT , LEFT_ALIGNMENT , RIGHT_ALIGNMENT , TOP_ALIGNMENT
 
인터페이스 java.awt.image. ImageObserver 로부터 상속된 필드
ABORT , ALLBITS , ERROR , FRAMEBITS , HEIGHT , PROPERTIES , SOMEBITS , WIDTH
 
생성자 의 개요
JSpinner ()
          초기치가 0 으로 최소치 또는 최대치의 제한이 없는 Integer SpinnerNumberModel 를 가지는 스피나-를 구축합니다.
JSpinner (SpinnerModel  model)
          다음에 진행되는 및 앞으로 돌아가는 버튼의 페어와 SpinnerModel 용의 에디터를 가지는 완전한 스피나-를 구축합니다.
 
메소드의 개요
 void addChangeListener (ChangeListener  listener)
          청취자를, 모델에의 변경을 할 때마다 통지되는 리스트에 추가합니다.
 void commitEdit ()
          현재 편집되고 있는 값을 SpinnerModel 에 확정합니다.
protected  JComponent createEditor (SpinnerModel  model)
          이 메소드는, 순서의 현재의 값을 표시하는 JComponent 를 작성하기 위해서, 생성자 에 의해 불려 갑니다.
protected  void fireStateChanged ()
          이 JSpinner 의 소스를 보관 유지하는 ChangeEvent 를 각 ChangeListener 에 송신합니다.
 AccessibleContext getAccessibleContext ()
          JSpinnerAccessibleContext 를 가져옵니다.
 ChangeListener [] getChangeListeners ()
          addChangeListener()를 사용해, 이 JSpinner 에 추가된 모든 ChangeListener 의 배열을 돌려줍니다.
 JComponent getEditor ()
          모델의 값을 표시해, 변경도 할 수 있는 컴퍼넌트를 돌려줍니다.
 SpinnerModel getModel ()
          이 스피나-의 값의 순서를 정의하는 SpinnerModel 돌려줍니다.
 Object getNextValue ()
          getValue() 에 의해 반환된 객체의 뒤에 있는 순서의 객체를 돌려줍니다.
 Object getPreviousValue ()
          getValue() 에 의해 반환된 객체의 전에 있는 순서의 객체를 돌려줍니다.
 SpinnerUI getUI ()
          이 컴퍼넌트를 draw 하는 Look & Feel (L&F) 객체를 돌려줍니다.
 String getUIClassID ()
          Look & Feel (L&F) 클래스의 이름의 구축에 사용된 접두사를 돌려줍니다.
 Object getValue ()
          모델의 현재의 값을 돌려줍니다.
 void removeChangeListener (ChangeListener  listener)
          이 스피나-로부터 ChangeListener 를 삭제합니다.
 void setEditor (JComponent  editor)
          SpinnerModel 의 현재의 값을 표시하는 JComponent 를 변경합니다.
 void setModel (SpinnerModel  model)
          이 스피나-의 값을 나타내는 모델을 변경합니다.
 void setUI (SpinnerUI  ui)
          이 컴퍼넌트를 draw 하는 Look & Feel (L&F) 객체를 설정합니다.
 void setValue (Object  value)
          모델의 현재의 값을 변경합니다.
 void updateUI ()
          현재의 Look & Feel 로부터의 값을 가지는 UI 프로퍼티을 리셋 합니다.
 
클래스 javax.swing. JComponent 로부터 상속된 메소드
addAncestorListener , addNotify , addVetoableChangeListener , computeVisibleRect , contains , createToolTip , disable , enable , firePropertyChange , firePropertyChange , firePropertyChange , fireVetoableChange , getActionForKeyStroke , getActionMap , getAlignmentX , getAlignmentY , getAncestorListeners , getAutoscrolls , getBaseline , getBaselineResizeBehavior , getBorder , getBounds , getClientProperty , getComponentGraphics , getComponentPopupMenu , getConditionForKeyStroke , getDebugGraphicsOptions , getDefaultLocale , getFontMetrics , getGraphics , getHeight , getInheritsPopupMenu , getInputMap , getInputMap , getInputVerifier , getInsets , getInsets , getListeners , getLocation , getMaximumSize , getMinimumSize , getNextFocusableComponent , getPopupLocation , getPreferredSize , getRegisteredKeyStrokes , getRootPane , getSize , getToolTipLocation , getToolTipText , getToolTipText , getTopLevelAncestor , getTransferHandler , getVerifyInputWhenFocusTarget , getVetoableChangeListeners , getVisibleRect , getWidth , getX , getY , grabFocus , isDoubleBuffered , isLightweightComponent , isManagingFocus , isOpaque , isOptimizedDrawingEnabled , isPaintingForPrint , isPaintingTile , isRequestFocusEnabled , isValidateRoot , paint , paintBorder , paintChildren , paintComponent , paintImmediately , paintImmediately , paramString , print , printAll , printBorder , printChildren , printComponent , processComponentKeyEvent , processKeyBinding , processKeyEvent , processMouseEvent , processMouseMotionEvent , putClientProperty , registerKeyboardAction , registerKeyboardAction , removeAncestorListener , removeNotify , removeVetoableChangeListener , repaint , repaint , requestDefaultFocus , requestFocus , requestFocus , requestFocusInWindow , requestFocusInWindow , resetKeyboardActions , reshape , revalidate , scrollRectToVisible , setActionMap , setAlignmentX , setAlignmentY , setAutoscrolls , setBackground , setBorder , setComponentPopupMenu , setDebugGraphicsOptions , setDefaultLocale , setDoubleBuffered , setEnabled , setFocusTraversalKeys , setFont , setForeground , setInheritsPopupMenu , setInputMap , setInputVerifier , setMaximumSize , setMinimumSize , setNextFocusableComponent , setOpaque , setPreferredSize , setRequestFocusEnabled , setToolTipText , setTransferHandler , setUI , setVerifyInputWhenFocusTarget , setVisible , unregisterKeyboardAction , update
 
클래스 java.awt. Container 로부터 상속된 메소드
add , add , add , add , add , addContainerListener , addImpl , addPropertyChangeListener , addPropertyChangeListener , applyComponentOrientation , areFocusTraversalKeysSet , countComponents , deliverEvent , doLayout , findComponentAt , findComponentAt , getComponent , getComponentAt , getComponentAt , getComponentCount , getComponents , getComponentZOrder , getContainerListeners , getFocusTraversalKeys , getFocusTraversalPolicy , getLayout , getMousePosition , insets , invalidate , isAncestorOf , isFocusCycleRoot , isFocusCycleRoot , isFocusTraversalPolicyProvider , isFocusTraversalPolicySet , layout , list , list , locate , minimumSize , paintComponents , preferredSize , printComponents , processContainerEvent , processEvent , remove , remove , removeAll , removeContainerListener , setComponentZOrder , setFocusCycleRoot , setFocusTraversalPolicy , setFocusTraversalPolicyProvider , setLayout , transferFocusBackward , transferFocusDownCycle , validate , validateTree
 
클래스 java.awt. Component 로부터 상속된 메소드
action , add , addComponentListener , addFocusListener , addHierarchyBoundsListener , addHierarchyListener , addInputMethodListener , addKeyListener , addMouseListener , addMouseMotionListener , addMouseWheelListener , bounds , checkImage , checkImage , coalesceEvents , contains , createImage , createImage , createVolatileImage , createVolatileImage , disableEvents , dispatchEvent , enable , enableEvents , enableInputMethods , firePropertyChange , firePropertyChange , firePropertyChange , firePropertyChange , firePropertyChange , firePropertyChange , getBackground , getBounds , getColorModel , getComponentListeners , getComponentOrientation , getCursor , getDropTarget , getFocusCycleRootAncestor , getFocusListeners , getFocusTraversalKeysEnabled , getFont , getForeground , getGraphicsConfiguration , getHierarchyBoundsListeners , getHierarchyListeners , getIgnoreRepaint , getInputContext , getInputMethodListeners , getInputMethodRequests , getKeyListeners , getLocale , getLocation , getLocationOnScreen , getMouseListeners , getMouseMotionListeners , getMousePosition , getMouseWheelListeners , getName , getParent , getPeer , getPropertyChangeListeners , getPropertyChangeListeners , getSize , getToolkit , getTreeLock , gotFocus , handleEvent , hasFocus , hide , imageUpdate , inside , isBackgroundSet , isCursorSet , isDisplayable , isEnabled , isFocusable , isFocusOwner , isFocusTraversable , isFontSet , isForegroundSet , isLightweight , isMaximumSizeSet , isMinimumSizeSet , isPreferredSizeSet , isShowing , isValid , isVisible , keyDown , keyUp , list , list , list , location , lostFocus , mouseDown , mouseDrag , mouseEnter , mouseExit , mouseMove , mouseUp , move , nextFocus , paintAll , postEvent , prepareImage , prepareImage , processComponentEvent , processFocusEvent , processHierarchyBoundsEvent , processHierarchyEvent , processInputMethodEvent , processMouseWheelEvent , remove , removeComponentListener , removeFocusListener , removeHierarchyBoundsListener , removeHierarchyListener , removeInputMethodListener , removeKeyListener , removeMouseListener , removeMouseMotionListener , removeMouseWheelListener , removePropertyChangeListener , removePropertyChangeListener , repaint , repaint , repaint , resize , resize , setBounds , setBounds , setComponentOrientation , setCursor , setDropTarget , setFocusable , setFocusTraversalKeysEnabled , setIgnoreRepaint , setLocale , setLocation , setLocation , setName , setSize , setSize , show , show , size , toString , transferFocus , transferFocusUpCycle
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait
 

생성자 의 상세

JSpinner

public JSpinner(SpinnerModel  model)
다음에 진행되는 및 앞으로 돌아가는 버튼의 페어와 SpinnerModel 용의 에디터를 가지는 완전한 스피나-를 구축합니다.


JSpinner

public JSpinner()
초기치가 0 으로 최소치 또는 최대치의 제한이 없는 Integer SpinnerNumberModel 를 가지는 스피나-를 구축합니다.

메소드의 상세

getUI

public SpinnerUI  getUI()
이 컴퍼넌트를 draw 하는 Look & Feel (L&F) 객체를 돌려줍니다.

반환값:
이 컴퍼넌트를 draw 하는 SpinnerUI 객체

setUI

public void setUI(SpinnerUI  ui)
이 컴퍼넌트를 draw 하는 Look & Feel (L&F) 객체를 설정합니다.

파라미터:
ui - SpinnerUI L&F 객체
관련 항목:
UIDefaults.getUI(javax.swing.JComponent)

getUIClassID

public String  getUIClassID()
Look & Feel (L&F) 클래스의 이름의 구축에 사용된 접두사를 돌려줍니다. 이 클래스는, 이 컴퍼넌트를 draw 하는데 사용됩니다.

오버라이드(override):
클래스 JComponent 내의 getUIClassID
반환값:
SpinnerUI 의 캐릭터 라인
관련 항목:
JComponent.getUIClassID() , UIDefaults.getUI(javax.swing.JComponent)

updateUI

public void updateUI()
현재의 Look & Feel 로부터의 값을 가지는 UI 프로퍼티을 리셋 합니다.

오버라이드(override):
클래스 JComponent 내의 updateUI
관련 항목:
UIManager.getUI(javax.swing.JComponent)

createEditor

protected JComponent  createEditor(SpinnerModel  model)
이 메소드는, 순서의 현재의 값을 표시하는 JComponent 를 작성하기 위해서, 생성자 에 의해 불려 갑니다. 또, 에디터를 사용하는 것으로써, 사용자는 순서의 요소를 직접 입력하는 것이 가능하게 됩니다. 에디터는 modelChangeEvents 를 대기해, 표시하는 값이 모델의 값과 동기 하도록(듯이) 유지할 필요가 있습니다.  

서브 클래스는, 이 메소드를 오버라이드(override) 해, 새로운 SpinnerModel 클래스의 지원를 추가합니다. 또, 여기서 작성된 에디터를, 단지 setEditor 메소드와 옮겨놓을 수도 있습니다. 모델형으로부터 에디터에의 디폴트의 매핑은, 다음과 같습니다.

파라미터:
model - getModel 의 값
반환값:
순서의 현재의 값을 표시하는 컴퍼넌트
관련 항목:
getModel() , setEditor(javax.swing.JComponent)

setModel

public void setModel(SpinnerModel  model)
이 스피나-의 값을 나타내는 모델을 변경합니다. 에디터의 프로퍼티이 명시적으로 설정되어 있지 않은 경우, 에디터의 프로퍼티은 "model" PropertyChangeEvent 가 트리거된 후에 암묵중으로 설정됩니다. 에디터의 프로퍼티은, 다음과 같이 createEditor 에 의해 반환된 값으로 설정됩니다.
 setEditor(createEditor(model));
 

파라미터:
model - 새로운 SpinnerModel
예외:
IllegalArgumentException - 모델이 null 의 경우
관련 항목:
getModel() , getEditor() , setEditor(javax.swing.JComponent)

getModel

public SpinnerModel  getModel()
이 스피나-의 값의 순서를 정의하는 SpinnerModel 돌려줍니다.

반환값:
모델의 프로퍼티의 값
관련 항목:
setModel(javax.swing.SpinnerModel)

getValue

public Object  getValue()
모델의 현재의 값을 돌려줍니다. 일반적으로, 이 값은 editor 에 의해 표시됩니다. 사용자가 editor 에 의해 표시된 값을 변경하면(자),model 의 값과 editor 의 값이 달라 버릴 가능성이 있습니다. 이 문제의 대처 방법의 예에 대해서는, 클래스 레벨의 javadoc 를 참조해 주세요.  

이 메소드는 단지 model 에 위양 됩니다. 이것은 이하와 동등합니다.

 getModel(). getValue()
 

관련 항목:
setValue(java.lang.Object) , SpinnerModel.getValue()

setValue

public void setValue(Object  value)
모델의 현재의 값을 변경합니다. 일반적으로, 이 값은 editor 에 의해 표시됩니다. SpinnerModel 의 구현이 지정된 값을 지원하고 있지 않는 경우는,IllegalArgumentException 가 throw 됩니다.  

이 메소드는 단지 model 에 위양 됩니다. 이것은 이하와 동등합니다.

 getModel(). setValue(value)
 

예외:
IllegalArgumentException - value 가 정당하지 않은 경우
관련 항목:
getValue() , SpinnerModel.setValue(java.lang.Object)

getNextValue

public Object  getNextValue()
getValue() 에 의해 반환된 객체의 뒤에 있는 순서의 객체를 돌려줍니다. 순서의 종점에 도달했을 경우,null 를 돌려줍니다. 이 메소드를 호출해도,value 에는 영향을 주지 않습니다.  

이 메소드는 단지 model 에 위양 됩니다. 이것은 이하와 동등합니다.

 getModel(). getNextValue()
 

반환값:
다음의 정당한 값, 또는 그것이 존재하지 않는 경우는 null
관련 항목:
getValue() , getPreviousValue() , SpinnerModel.getNextValue()

addChangeListener

public void addChangeListener(ChangeListener  listener)
청취자를, 모델에의 변경을 할 때마다 통지되는 리스트에 추가합니다. ChangeListeners 에 송신된 ChangeEvents 의 소스는 이 JSpinner 입니다. 모델의 치환은 Jspinner 에 직접 추가된 청취자에게 영향을 주지 않는 것에도 주의해 주세요. 어플리케이션은, 청취자를 모델로 직접 추가할 수 있습니다. 이 경우는, 이벤트의 소스는 SpinnerModel 가 됩니다.

파라미터:
listener - 추가하는 ChangeListener
관련 항목:
removeChangeListener(javax.swing.event.ChangeListener) , getModel()

removeChangeListener

public void removeChangeListener(ChangeListener  listener)
이 스피나-로부터 ChangeListener 를 삭제합니다.

파라미터:
listener - 삭제하는 ChangeListener
관련 항목:
fireStateChanged() , addChangeListener(javax.swing.event.ChangeListener)

getChangeListeners

public ChangeListener [] getChangeListeners()
addChangeListener()를 사용해, 이 JSpinner 에 추가된 모든 ChangeListener 의 배열을 돌려줍니다.

반환값:
추가된 모든 ChangeListener. 청취자가 추가되어 있지 않은 경우는 빈 상태(empty)의 배열
도입된 버젼:
1.4

fireStateChanged

protected void fireStateChanged()
JSpinner 의 소스를 보관 유지하는 ChangeEvent 를 각 ChangeListener 에 송신합니다. ChangeListener 가 스피나-에 추가되고 있는 경우, 모델로부터 ChangeEvent 를 받을 때마다, 이 메소드가 불려 갑니다.

관련 항목:
addChangeListener(javax.swing.event.ChangeListener) , removeChangeListener(javax.swing.event.ChangeListener) , EventListenerList

getPreviousValue

public Object  getPreviousValue()
getValue() 에 의해 반환된 객체의 전에 있는 순서의 객체를 돌려줍니다. 순서의 종점에 도달했을 경우,null 를 돌려줍니다. 이 메소드를 호출해도,value 에는 영향을 주지 않습니다.  

이 메소드는 단지 model 에 위양 됩니다. 이것은 이하와 동등합니다.

 getModel(). getPreviousValue()
 

반환값:
직전의 정당한 값, 또는 그것이 존재하지 않는 경우는 null
관련 항목:
getValue() , getNextValue() , SpinnerModel.getPreviousValue()

setEditor

public void setEditor(JComponent  editor)
SpinnerModel 의 현재의 값을 표시하는 JComponent 를 변경합니다. 이 메소드에 의해, 낡은 에디터가 모델로부터 떼어내져 새로운 에디터가 접속됩니다. 이것은, 낡은 에디터의 ChangeListener 를 모델 또는 스피나-자체로부터 삭제해, 새로운 에디터의 변경 청취자를 추가하는 것을 의미합니다.

파라미터:
editor - 새로운 에디터
예외:
IllegalArgumentException - 에디터가 null 의 경우
관련 항목:
getEditor() , createEditor(javax.swing.SpinnerModel) , getModel()

getEditor

public JComponent  getEditor()
모델의 값을 표시해, 변경도 할 수 있는 컴퍼넌트를 돌려줍니다.

반환값:
모델의 값을 표시해, 변경도 할 수 있는 컴퍼넌트
관련 항목:
setEditor(javax.swing.JComponent) , createEditor(javax.swing.SpinnerModel)

commitEdit

public void commitEdit()
                throws ParseException 
현재 편집되고 있는 값을 SpinnerModel 에 확정합니다.  

에디터가 DefaultEditor 의 인스턴스의 경우, 에디터에 전송 되었을 때는 호출을 실시해, 그 이외 때는 아무것도 처리를 실시하지 않습니다.

예외:
ParseException - 현재 편집되고 있는 값을 확정할 수 없었던 경우

getAccessibleContext

public AccessibleContext  getAccessibleContext()
JSpinnerAccessibleContext 를 가져옵니다.

정의:
인터페이스 Accessible 내의 getAccessibleContext
오버라이드(override):
클래스 JComponent 내의 getAccessibleContext
반환값:
JSpinnerAccessibleContext
도입된 버젼:
1.5

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.