Blackberry ile Custom EditField

Batuhan Düzgün tarafından yayınlanmıştır 11. February 2012 06:52

Merhaba arkadaşlar bu yazımda sizlere Blackberry Mobil Programlama konusu kapsamında,  Custom bileşen nasıl hazırlanır bundan bahsedeceğim. Öncelikle, Blackberry ile programlama yaparken bileşenin davranışını ve görünümünü değiştirmek isteyebilirsiniz. İşte bu noktada Blackberry kütüphanelerinde yer alan temel bileşen veri yapıları yardımımıza yetişiyor. Bu temel  Blackberry bileşenlerinden kalıtım yoluyla farklı özelliklerde bileşen hazırlama imkanına sonuna kadar sahipsiniz.

Kalıtım alınan temel Blackberry bileşeninin bütün metodlarını  override  edip kullanabilirsiniz. Özellikle bu noktada “paint” , “sublayout” ve “layout” gibi metodlar önem arz eder. Bunların kullanımına alışmak zaman gerektirebilir.

Hazırlayacağımız textbox bileşeni ekrana konulduğunda verilen ilk boy uzunluğunda çizilecektir. Daha sonra yazı yazıldıkça textbox boyutu büyüyecek ve yazılar silindikçe textbox boyutu ilk değerinden aşağı inmeyecektir.

Aşağıda CustomTextBox bileşenine ait kodlar yer almaktadır.

// Custom EditField bileşeni (Textbox)

      public class CustomEditField extends EditField{

 

            // Dışarıdan verilen genişlik değeri

            private int _Width;

            // Dışarıdan verilen uzunluk değeri

            private int _Height = -1;

            // Textbox'ın varsayılan uzunluk değeri

            private int _InitializeHeight;

           

            public CustomEditField() {

                  super(EditField.NO_NEWLINE);

            }

           

            // Kurucuda bileşenin stilini veriyoruz, ve uzunluk, genişlik değerleri verilir.

            public CustomEditField(long style, int width, int height) {

                  super(style|Field.FIELD_HCENTER|Field.FIELD_VCENTER);

                  this._Width = width - 24;

                  this._Height = height;

                  this._InitializeHeight = _Height;

            }

           

            public void SetWidth(int value) {

                  _Width = value;

            }

           

            public void SetHeight(int value) {

                  _Height = value;

            }

 

            // Textbox'ın boyutunu çizdirecek olan metod.

            // Bu metod blackberry editfield bileşenine aittir.

            // Hazırlanmış olan sınıfta editfield'dan kalıtım aldığı için override ederek bu metodların içini istediğimiz gibi dolduruyoruz.

            protected void layout(int width,int height)

            {

                  super.layout(_Width, _Height);

 

                  // textbox'ın boyutu verilen varsayılan boyutu geçmemiş ise verilen varsayılan uuznluk ve

                  // genişlik değerleriyle ekrana çizdirilir.

                  // layout metodu içinde görsel bileşen ekrana çizidirilmeden önce,

                  // gerçek uzunluk ve genişlik değerlerini alabilirsiniz.

                  // layout metodu dışında çalışma zamanında getHeight() ve getWidth metodlarını çağırdığınızda

                  // (0) (sıfır) değeri alacaksınızdır.

                 

                  if(_InitializeHeight > getHeight()) {

                        super.setExtent(_Width, _InitializeHeight);

                  } else {

                        // Eğer textboxa yazı yazılıp bu yazı uzunluğu varsayılan değerin üstündeyse o halde,

                        // otomatik uzama sağlamak için, çalışma zamanındaki uzunluk ve genişlik çizdirilir.

                        super.setExtent(_Width, getHeight());

                  }

            }

           

            public int GetHeight() {

                  return _Height;

            }

      }

CustomTextbox sınıfını hazırladıktan sonra bu texbox’a çerçeve özelliği verecek olan VerticalFieldManager tipinde bir Custom bileşen hazırlıyoruz.

// Textbox'ımıza görsel zenginlik katacak olan sınıftır.

      // Bu sınıfın görevi textbox için saydam ve şık bir çerçeve hazırlamaktır.

      // Önceden dediğimiz gibi bir çok farklı bileşeni custom yaparak, farklı işlevler için kullanabilirsiniz.

      // Hazırladığımız CustomEditField nesnesini bu çerçeveyi oluşturan VerticalFieldManager tipinden bir contanier içine yerleştireceğiz.

     

      public class CustomTextBoxManager extends VerticalFieldManager {

 

            private int customWidht = 150;

            private int _Height = -1;

            private int _InitializeHeight;

           

            public CustomTextBoxManager(long style, int width, int height) {

                  super(style|Manager.FIELD_VCENTER);

                  super.setBorder(BorderFactory.createRoundedBorder(new XYEdges (2, 2, 2, 2), Color.GRAY, Border.STYLE_SOLID));

                  customWidht = width;

                  _Height = height;

                  _InitializeHeight = _Height;

            }

           

            public void SetWidth(int value) {

                  customWidht = value;

            }

            public void SetHeight(int value) {

                  _Height = value;

            }

 

            // Textbox'ı kapsadığı için verilen renk textbox'ın background rengi gibi algılanacaktır.

            public void paint(Graphics g) {

                  g.setBackgroundColor(0xCCCC66);

                  g.clear();

                  super.paint(g);

            }

           

            protected void sublayout(int width,int height)

            {

                  super.sublayout(customWidht, height);

                  if(_InitializeHeight > getHeight()) {

                        super.setExtent(customWidht, _InitializeHeight);

                  } else {

                        super.setExtent(customWidht, getHeight());

                  }

            }

           

            public int GetHeight() {

                  return _Height;

            }

      }

Aşağıda custom textboxların ve custom manager’lerın kullanımına ait kodlar verilmiştir.

public MyScreen()

    {       

        // Set the displayed title of the screen      

        setTitle("MyTitle");

       

        // CustomTextboxlar ve Manager'ler yaratılır.

        CustomTextBoxManager _manager1 = new CustomTextBoxManager(Manager.FIELD_VCENTER, 160, 32);

        CustomEditField _textbox1 = new CustomEditField(Field.EDITABLE, 160, 32);

        _manager1.add(_textbox1);

       

        CustomTextBoxManager _manager2 = new CustomTextBoxManager(Manager.FIELD_VCENTER, 160, 32);

        CustomEditField _textbox2 = new CustomEditField(Field.EDITABLE, 160, 32);

        _manager2.add(_textbox2);

       

        // Ekrana eklemek için add metodu çağrılır.

        add(_manager1);

        add(_manager2);

    }

Bir yazımın daha sonuna geldim. Bir sonraki makalemde görüşmek dileğiyle …

Batuhan Düzgün

Bilgisayar Mühendisi –Endüstri Mühendisi

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Blackberry

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  September 2018  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Yazıları geniş takvimde göster