2011-02-23 2 views

답변

6

여러 가지 해결책이 있는데 하나는 다른 입력란 사이에 공백으로 사용할 맞춤 입력란을 만들 수 있다는 것입니다.

private static class SpacerField extends Field 
{ 
    private int spacerWidth; 
    private int spacerHeight; 
    private SpacerField(int width, int height) { 
     spacerWidth = width; 
     spacerHeight = height; 
    } 

    protected void layout(int width, int height) { 
     setExtent(getPreferredWidth(), getPreferredHeight()); 
    } 

    protected void paint(Graphics g) { 
     // nothing to paint; this is a blank field 
    } 

    public int getPreferredHeight() { 
     return spacerHeight; 
    } 

    public int getPreferredWidth() { 
     return spacerWidth; 
    } 
} 

//... 
// Usage 

add(new LabelField("Before Spacer")); 
add(new SpacerField(0, 100)); 
add(new LabelField("After Spacer")); 

포함 된 필드의 여백 또는 여백을 설정하는 것은 다른 해결책입니다. 사물을 관리하는 최선의 방법이라고 생각하는 것은 당신에게 달린 것입니다.

+2

필드 추가와 간격 추가간에 성능 차이가 있습니까? –

1

나는 실제로 당신이 무엇을 원하는 대부분의 시간은, 수직 현장 관리자의 아이 필드, 하지sePadding()에 전화 setMargin()는 사실을 알게 될 것입니다. 나는 이제 creating a SpacerField이 불필요하게 복잡하다고 생각합니다.

myField.setMargin(5, 0, 5, 0); 

그것은 우리가 얘기하는 방법과 크기가 지정되어 있지만, 일반적으로 setPadding() 실제로 방식에 따라 시각적 인 영향을 미칠 수있는 필드 큰 것하고 아이 필드의 종류에 따라 달라집니다 필드의 배경과 테두리가 그려집니다. setMargin()이 필드를 더 크게 만들지는 않습니다. 이는 질문에서 묻고있는 것과 더 일치한다고 생각합니다.

See Mr Vincenzo's answer here, with pictures!

참고 :setMargin()setPadding() 공식적으로 상대적으로 늦게은 BlackBerry Java 진화의 Field API에 추가하지만 그 전에 문서화되지 않은 방법으로 사용할 수 있었다.

또 다른 주

다음 one described in this question처럼 setMargin()를 사용하는 경우 나는 이상한 문제를 보았다. 이 경우 다른 두 가지 솔루션 중 하나를 사용해야합니다.

+1

여백을 설정하는 것은 패딩을 설정하는 것보다 '안전'한 것 같습니다. BBOS의 일부 버전은 NullField에서 패딩을 설정할 때 잘 반응하지 않습니다. 또한 SpacerField +1은 요즘 블랙 베리에 불필요합니다. NullField는 포커스를 흡수하는 데 유용합니다. 아무 것도 포커스를받지 못하도록하려면 포커스를 요소에서 벗어나게하려면 NullField가 유용합니다. –

관련 문제