Blackberry Custom GridFieldManager Projesi

Batuhan Düzgün tarafından yayınlanmıştır 5. March 2012 07:29

Merhaba arkadaşlar bu yazımda sizlere Blackberry ile tablo görseli hazırlamak nasıl gerçekleşirilir bundan bahsedeceğim. Özellikle bu noktada "GridFieldManager" isimli Blackberry sınıfı bizim işimize yaracak olan en önemli sınıftır. "GridFieldManager" sınıf tablo yapısı oluşturmak için temel özellikleri sağlar fakat ek özellikler içeren, uzunluk,genişlik ve renk gibi ayarların yazılımcı tarafından ayarlandığı Custom bir GridFieldManager genellikle daha esnek bir geliştirme imkanı sağlar. Şimdi projede gerekli olacak olan sınıfları tek tek yazalım.
 
Gerekli olacak olan sınıflar ...
 
1-) LabelField sınıfı (Label)
2-) EditField sınıfı (Textbox)
3-) GridFieldManager sınıfı (GridView) 
4-) VerticalFieldManager sınıfı
 
Yularıda bahsedilen dört sınıfa ait olan nesne örnekleriyle güzel ve basit bir proje ile Custom bileşenler nasıl yazılabilir anlatacağım. Özellikle custom bileşenlar hazırlarken Blackberry bu konuda bütün bileşenleri Field adında ortak bir base sınıfa çektiği için ve belli özelliklere kadar temel işlemleri desteklediği için Custom bileşen yazmak gayet zevkli ve verimli bir yöntemdir. Ofiste Blackberry projelerini gerçekleştirirken ilk zamanlar C# dilinden gelen alışkanlıkla temel özellikleri olan bileşenleri olduğu gibi kullanmaya çalıştım. Fakat başarısız oldum. Daha sonra Custom bileşen geliştirme mantığını kavradım ve kendime ait Custom Blackberry Component Framework hazırladım. Bunun geliştirilmesi sürmektedir. Aşağıda CustomGridFieldManager sınıfına ait kodlar verilmiştir.
 
 
package mypackage;

import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.XYEdges;
import net.rim.device.api.ui.component.EditField;
import net.rim.device.api.ui.container.GridFieldManager;
import net.rim.device.api.ui.decor.Border;
import net.rim.device.api.ui.decor.BorderFactory;

public class CustomGridFieldManager extends GridFieldManager {

// Uzunluk ve Genişlik değerleri
private int _height, _with;
private boolean _lock = true;
public  CustomGridFieldManager(int rows,int columns,long style) {
super(rows, columns, style);
// GridFieldManager etrafına 2 piksel kalınlıkta bir çerçeve çizdirilir.
super.setBorder(BorderFactory.createRoundedBorder(new XYEdges (2, 2, 2, 2), Color.GRAY, Border.STYLE_SOLID));
// GridField içine textboxlar yerleştirilir.
createTextboxes();
}
private void createTextboxes() {
// Her satır için satır biçimlendirmesi yapılır.
// Her satıra ait boy değeri 45 piksel verilir.
for(int i = 0; i < this.getRowCount(); i++) {
this.setRowProperty(i, FIXED_SIZE, 45);
this.setCellPadding(10);
}
// Her sütun için sütun biçimlendirmesi yapılır.
// Her sütun için boy değeri 75 piksel verilir.
for(int j = 0; j < this.getColumnCount(); j++) {
this.setColumnProperty(j, FIXED_SIZE, 75);
}
// İç içe döngüler içinde matris şeklinde textboxlar eklenir.
for(int i = 0; i < this.getRowCount(); i++) {
for(int j = 0; j < this.getColumnCount(); j++) {
EditField _textbox = new EditField(EditField.FIELD_VCENTER|EditField.FIELD_HCENTER) {
public void paint(Graphics g) {
// Textbox etrafına çerçeve çizdirilir ve arka plan rengi Beige yapılır.
super.setBorder(BorderFactory.createRoundedBorder(new XYEdges (2, 2, 2, 2), Color.GRAY, Border.STYLE_SOLID));
g.setBackgroundColor(Color.BEIGE);
g.clear();
super.paint(g);
}
};
this.insert(_textbox, i, j);
}
}
}

protected void sublayout(int width, int height) {
// bir kereliğine çerçeve çizdirilir.
if(_lock) {
super.sublayout(_with, _height);
super.setExtent(_with, getHeight());
_lock = false;
}
}
// arka plan rengi ayarlanır
public void paint(Graphics g) {
g.setBackgroundColor(Color.BISQUE);
g.clear();
super.paint(g);
}
public void setWith(int width) {
this._with = width;
}
public void setHeight(int height) {
this._height = height;
}
}
 
Ardından ekrandaki görsel pencereyi oluşturacak olan ve görsel bileşenlerin ekleneceği sınıfa ait kodlar aşağıdaki gibidir.
 
public final class MyScreen extends MainScreen
{
    /**
     * Creates a new MyScreen object
     */
    public MyScreen()
    {        
        // Set the displayed title of the screen       
        setTitle("MyTitle"); // ekranın başlığının belirlendiği kod satırı
        // Ekrana eklenen bileşenleri alt alta satırlar halinde sıralamaya yarar.
        VerticalFieldManager _vertical = new VerticalFieldManager(Manager.FIELD_HCENTER);
        _vertical.setMargin(15, 0, 0, 0);
        // Ekranın en üstünden 15 piksellik bir margin değeri verilir.
        
        //Aşağıdaki gibi bir Label bileşen oluşturulur.
        // İlk parametrede ekranda görülmesi istenen yazı girilir.
        // İkinci parametre ise ekranda yerleştirilecek olan pozisyon türünü belirtir.
        // Burada Horizontal olarak bir ortalama kullanılacağı belirtildi.
        LabelField _label = new LabelField("Custom Table -- batux --", LabelField.FIELD_HCENTER) {
        // Sınıf içi metod olarak layout ve paint metodları override edilir.
       
        // layout metodu görselin boy ve en gibi özelliklerini ayarlar.
        protected void layout(int width, int height) {
        super.layout(width, height);
        // 300 piksel genişliğinde ve ekranda kapladığı uzunluk kadar bir alan hazırlanır.
        super.setExtent(300, getHeight());
        }
        public void paint(Graphics g) {
        // Görsel bileşenin arkaplanı renginin siyah olması sağlanır.
        g.setBackgroundColor(Color.BLACK);
        g.clear();
        // Ardından setColor ile yazı renginin beyaz olması sağlanır.
        g.setColor(Color.WHITE);
        super.paint(g);
        }
        };
        // Vertical bileşen tutucuya Label eklenir.
        _vertical.add(_label);
        // CustomGridFieldManager yaratılır.
        CustomGridFieldManager _grid = new CustomGridFieldManager(3, 3, GridFieldManager.FIELD_HCENTER);
        // Genişlik değeri 300 piksel verilir.
        _grid.setWith(300);
        // Vertical bileşen tutucuya eklenir.
        _vertical.add(_grid);
        this.add(_vertical);
    }
}
 
Ardından projeyi çalıştırılır ve sonuçlar simülatorde incelenir.
 
 
 
Blackberry ile olan yazılar devam edecektir. Bir sonraki makalemde görüşmek dileğiyle ... 
 
Batuhan Düzgün
 
Bilgisayar Mühendisi
 
Endüstri Mühendisi 

Currently rated 3.0 by 2 people

  • Currently 3/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

<<  July 2018  >>
MoTuWeThFrSaSu
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

Yazıları geniş takvimde göster