2011-04-27 5 views
0

내가하려는 것은 단순히 EditField의 높이를 변경하는 것입니다. 이것은 꽤 쉽게 들리지만, 나는 미친 듯이 움직이는 문제에 직면 해있다. 여기에 내 코드 :Blackberry EditField - 높이가 변경되지 않습니다.

public class CMainManager extends HorizontalFieldManager 
{ 
    EditField mtxt=new EditField(EditField.FOCUSABLE | EditField.FILTER_DEFAULT); 

    /* Constructeur */ 
    public CMainManager() 
    { 
     add(mtxt); 
    } 

    public int getPreferredHeight() 
    { 
      return Display.getHeight(); 
    } 

    public int getPreferredWidth() 
    { 
      return Display.getWidth(); 
    } 

    protected void sublayout(int width, int height) 
    { 
     layoutChild(mtxt, 50, 500); 
     setPositionChild(mtxt, 0, 10); 
     mtxt.setBackground(
       BackgroundFactory.createSolidBackground(0x000000FF)); 

     setExtent(width, height); 
    } 
} 

라인 layoutChild (mtxt, 50, 500); 내 EditField의 너비와 높이를 설정해야합니다. 그것은 그렇지만 너비 만 있습니다. 높이는 일정합니다. 제가 500으로 설정하면 10으로 설정했을 때와 같은 결과를 얻습니다.

제가 누락 된 것의 아이디어가 있습니까? 나는 확신 때문에 내가하고있어 바보 같은 오류 ...

감사

== 편집

jproffit 도움이 후, 내가 뭘 잘못했는지 이해 한

이다. 그러나 이제는 작동 (높이를 설정할 수 있습니다) 또 다른 문제가 있습니다. 여기에 나를 코드 :

이 코드로 나는 정확하게 포커스를 관리 할 수 ​​없다. 나는 무엇을 잊는가? 내 필드에 커서가 보이지 않습니다.

아이디어가 있으십니까?

감사

답변

2

당신은 당신이 그것을 걸릴 수 있습니다 공간의 최대 크기를 지정하고, 취할 그것을 크기를 말하는 것은 아니다. 그래서 10, 50 또는 500이라고 말하면, 높이가 8 인 경우에만 사용됩니다. 크기를 제어하려는 경우 EditField에서 layout()을 재정의해야합니다.

+0

덕분에 많이! BlackBerry SDK 개발자의 초심자로서 혼란 스러웠습니다. 감사합니다 – Vincent

+0

기꺼이 도와 드리겠습니다! – jprofitt

+0

수정으로 인해 다른 문제가 발생하여 질문을 수정했습니다. 어떤 생각? 감사. – Vincent

0

같은 일을 시도 .. 사용자 정의 editfield를 작성하고 배치 방법 내부

_editField = new EditField("", initialValueOfTextField) 
    { 
     protected void layout(int maxWidth, int maxHeight) 
     { 
      int myWidth = getMaxSize() * getFont().getAdvance("W");// define your req width 
      int myHeight= 50 // your required height 
      super.layout(myWidth, myHeight); 
     } 
    }; 
관련 문제