JavaTM Platform
Standard Ed. 6

javax.swing
클래스 SizeSequence

java.lang.Object 
  상위를 확장 javax.swing.SizeSequence


public class SizeSequence
extends Object

SizeSequence 객체는, 사이즈 및 대응하는 위치의, 순서 붙이고 된 리스트를 효과적으로 유지합니다. SizeSequence 의 상황으로서 적절한 예로서는, 사이즈가 동일하지 않은 복수의 행을 표시하는 컴퍼넌트의 경우가 있습니다. 이 경우, 단일의 SizeSequence 객체를 사용해, 모든 행의 높이와 Y 위치를 추적할 수 있습니다.

이제 1 개의 예로서 열사이즈가 동일하지 않은 JTable 등의 복수열컴퍼넌트가 있습니다. JTable 는, 단일의 SizeSequence 객체를 사용해 모든 열의 폭과 X 위치를 포함할 수 있습니다. 계속되어 JTable 는,SizeSequence 객체를 사용해 특정의 위치에 대응하는 열을 찾아낼 수가 있습니다. 1 개(살) 또는 복수의 열사이즈가 변경이 되었을 때에는 언제라도,JTableSizeSequence 객체를 갱신할 수 있습니다.

다음의 그림은, 복수열컴퍼넌트의 사이즈와 위치 데이터의 관계를 나타내고 있습니다.

최초의 항목은 위치 0 로부터 시작되어,2 번째의 항목은 전의 항목의 사이즈와 같은 위치로부터 시작되어, 그 후도 이와 같이 된다.

이 그림으로, 최초의 인덱스 (0)는 최초의 열에 대응해, 2 번째의 인덱스 (1)는 2 번째의 열에 대응한다, 와 같이 되어 있습니다. 최초의 열의 위치는 0 으로 시작되어, 이 열은 size0 픽셀을 차지합니다. size0getSize(0) 가 돌려주는 값입니다. 따라서 최초의 열은 size0 - 1 으로 끝납니다. 계속되어 2 번째의 열이 size0 으로부터 시작되어,size1 (getSize(1)) 픽셀을 차지합니다.

SizeSequence 객체는 단지 축으로 따른 간격을 나타냅니다. 상기의 예에서는, 간격은 픽셀 단위의 높이 또는 폭을 나타내고 있습니다. 그러나, 하루 가운데 시간 등, 다른 측정 단위도 똑같이 유효합니다.

구현상의 주의:

일반적으로, 엔트리의 사이즈와 위치를 포함하려면 , 사이즈의 포함인가, 또는 위치의 포함의 어느 쪽인지를 선택합니다. draw중에 필요한 공통 조작이 2 개 있습니다. 그것들은,getIndex(position)setSize(index, size) 입니다. 내부 형식에 어느 쪽을 선택해도, 엔트리수가 커지면(자) 2 의 조작의 어느 쪽인지는 효율이 나빠집니다. 사이즈를 포함했을 경우, 특정의 위치를 둘러싸는 엔트리의 인덱스의 검색은, 엔트리수 에 비례해 시간이 걸립니다. 반대로 위치를 포함했을 경우, 특정의 인덱스에 있는 엔트리의 사이즈의 설정은, 영향을 받는 엔트리의 위치를 갱신할 필요가 있어, 역시 엔트리수 에 비례해 계산에 시간이 걸립니다.

상기의 방법과 같이, 이 클래스는 내부에 N 개의 정수의 배열을 보관 유지합니다만, 사이즈 베이스의 방법과 위치 베이스의 방법의 중간의, 하이브리드(hybrid)인 인코딩을 사용합니다. 이것에 의해, 정보를 포함하는데 필요한 공간은 같습니다만, 대부분의 조작을 O(N) 시간은 아니고 Log(N) 시간에 실행할 수 있는 데이터 구조가 됩니다. N 는 리스트에 있는 엔트리수입니다.

엔트리수의 O(N)인 채 남는 조작은,insertEntries 메소드와 removeEntries 메소드의 2 개입니다. 양메소드 모두, 내부 배열을 정수 사이즈세트로 변환해, 그것을 새로운 배열에 카피해, 그 후 하이브리드(hybrid) 표현을 적절히 수정하는 것에 의해 구현합니다.

도입된 버젼:
1.3

생성자 의 개요
SizeSequence ()
          엔트리를 포함하고 있지 않는 새로운 SizeSequence 객체를 생성합니다.
SizeSequence (int numEntries)
          지정된 수의 엔트리를 포함하는, 새로운 SizeSequence 객체를 생성합니다.
SizeSequence (int[] sizes)
          지정된 사이즈를 포함하는 새로운 SizeSequence 객체를 생성합니다.
SizeSequence (int numEntries, int value)
          지정된 수의 엔트리를 포함하는, 새로운 SizeSequence 객체를 생성합니다.
 
메소드의 개요
 int getIndex (int position)
          지정된 위치에 대응하는 엔트리의 인덱스를 돌려줍니다.
 int getPosition (int index)
          지정된 엔트리의 개시 위치를 돌려줍니다.
 int getSize (int index)
          지정된 엔트리의 사이즈를 돌려줍니다.
 int[] getSizes ()
          전엔트리의 사이즈를 돌려줍니다.
 void insertEntries (int start, int length, int value)
          연속하는 엔트리의 그룹을 이 SizeSequence 에 추가합니다.
 void removeEntries (int start, int length)
          연속하는 엔트리의 그룹을 이 SizeSequence 로부터 삭제합니다.
 void setSize (int index, int size)
          지정된 엔트리의 사이즈를 설정합니다.
 void setSizes (int[] sizes)
          sizes 인수를 사용해, 이 SizeSequence 객체를 리셋 합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

SizeSequence

public SizeSequence()
엔트리를 포함하고 있지 않는 새로운 SizeSequence 객체를 생성합니다. 엔트리를 등록하려면 ,insertEntries 또는 setSizes 를 사용합니다.

관련 항목:
insertEntries(int, int, int) , setSizes(int, int)

SizeSequence

public SizeSequence(int numEntries)
지정된 수의 엔트리를 포함하는, 새로운 SizeSequence 객체를 생성합니다. 엔트리는 모두, 사이즈 0 에 초기화되고 있습니다.

파라미터:
numEntries - 추적하는 사이즈의 수
예외:
NegativeArraySizeException - 다음의 조건이 성립하는 경우: numEntries 의 값이 0 보다 작은 경우

SizeSequence

public SizeSequence(int numEntries,
                    int value)
지정된 수의 엔트리를 포함하는, 새로운 SizeSequence 객체를 생성합니다. 엔트리는 모두, 사이즈 value 에 초기화되고 있습니다.

파라미터:
numEntries - 추적하는 사이즈의 수
value - 각 사이즈의 초기치

SizeSequence

public SizeSequence(int[] sizes)
지정된 사이즈를 포함하는 새로운 SizeSequence 객체를 생성합니다.

파라미터:
sizes - SizeSequence 에 포함되는 사이즈의 배열
메소드의 상세

setSizes

public void setSizes(int[] sizes)
sizes 인수를 사용해, 이 SizeSequence 객체를 리셋 합니다. 이 메소드는, 이 객체가 sizes 배열과 동일한 엔트리를 포함하도록(듯이) 초기화합니다. 각 엔트리의 사이즈는,sizes 의 대응하는 항목의 값에 초기화됩니다.

파라미터:
sizes - 이 SizeSequence 에 포함되는 사이즈의 배열

getSizes

public int[] getSizes()
전엔트리의 사이즈를 돌려줍니다.

반환값:
이 객체의 사이즈를 포함하는 새로운 배열

getPosition

public int getPosition(int index)
지정된 엔트리의 개시 위치를 돌려줍니다. 예를 들어,getPosition(0) 는 0 을 돌려주어,getPosition(1)getSize(0) 를,getPosition(2)getSize(0) + getSize(1) 를 돌려줍니다.

indexlength 보다 큰 경우, 반환되는 값은 무의미합니다.

파라미터:
index - 위치가 요구되고 있는 엔트리의 인덱스
반환값:
지정된 엔트리의 개시 위치

getIndex

public int getIndex(int position)
지정된 위치에 대응하는 엔트리의 인덱스를 돌려줍니다. 예를 들어 getIndex(0) 는 0 입니다만, 이것은, 최초의 엔트리는 언제나 위치 0 으로부터 시작되기 (위해)때문에입니다.

파라미터:
position - 엔트리의 위치
반환값:
지정된 위치를 차지하는 엔트리의 인덱스

getSize

public int getSize(int index)
지정된 엔트리의 사이즈를 돌려줍니다. index 가 일정한 범위내 (0 <= index < getSizes(). length) 에 없는 경우, 동작은 미확정입니다.

파라미터:
index - 엔트리에 대응하는 인덱스
반환값:
엔트리의 사이즈

setSize

public void setSize(int index,
                    int size)
지정된 엔트리의 사이즈를 설정합니다. index 의 값이 일정한 범위내 (0 <= index < getSizes(). length) 에 없는 경우, 동작은 미확정입니다.

파라미터:
index - 엔트리에 대응하는 인덱스
size - 엔트리의 사이즈

insertEntries

public void insertEntries(int start,
                          int length,
                          int value)
연속하는 엔트리의 그룹을 이 SizeSequence 에 추가합니다. startlength 의 값은,(0 <= start < getSizes(). length) AND (length >= 0) 의 조건을 채울 필요가 있습니다. 이 조건을 채우지 않는 경우, 동작이 미확정인 모아 두어 예외가 throw 되는 경우가 있습니다.

파라미터:
start - 그룹내의 최초의 엔트리에 할당할 수 있는 인덱스
length - 그룹의 엔트리수
value - 새로운 각 엔트리에 할당하는 사이즈
예외:
ArrayIndexOutOfBoundsException - 파라미터가 다음의 범위내에 없는 경우: (0 <= start < (getSizes(). length)) AND (length >= 0)

removeEntries

public void removeEntries(int start,
                          int length)
연속하는 엔트리의 그룹을 이 SizeSequence 로부터 삭제합니다. startlength 의 값은,(0 <= start < getSizes(). length) AND (length >= 0) 의 조건을 채울 필요가 있습니다. 이 조건을 채우지 않는 경우, 동작이 미확정인 모아 두어 예외가 throw 되는 경우가 있습니다.

파라미터:
start - 삭제되는 최초의 엔트리의 인덱스
length - 삭제되는 엔트리의 수

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 도 참조해 주세요.