IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 11 Nisan 2012, 10:50   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Java'da Table Bileseni Kullanimi




Swing'in JTable nesnesi ve TableModel kullanımına ilişikin bir yazı

Swing'de JTable nesnesi MVC (Model-View-Controller / Model - Görünüş - Denetleyici) desenine uygun olarak tablonun verisi ile görsel bileşeni ayrı tanımlamaya izin verir. JTable, model olmadan da, bir matris (iki boyutlu dizi) verilerek de kullanılabilir. Örneğin;

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
String[] columns=new String[] {"Ad","Soyad","Ev Tel","Cep Tel","E-Mail"}; String[][] cells=new String[][]{ {"Ali","Yılmaz","622 12 56","533 7234 45 67","axxx@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].com"}, {"Veli","Kaya","642 01 14","543 257 42 657","
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
"}, {"Ahmet","Gül","621 52 12","533 234 25 27","zzz@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].com"}}; JTable table=new JTable(cells,columns);

şeklinde bir kod parçası bir matristen tablo oluşturabilir.

Bazı durumlarda tablo verisi program çalışmadan önce belli değildir veya çalışma esnasında sürekli değişiyordur. Bu durumda TableModel arayüzünü gerçekleştirerek verinin gerçek zamanda JTable nesnesine verilmesi sağlanabilir. TableModel programcının gerçekleştirebileceği bir arayüzdür. Ancak onu genişleten, sadece 3 yöntemi yazarak modelin gerçekleştirilebilmesini sağlayan AbstractTableModel sınıfı bulunmaktadır. Bunun üç yöntemi, satır sayısını veren bir yöntem, sütün sayısını veren bir yöntem ve satır ve sütunu verilen bir hücrenin değerini veren bir yöntem. Yöntemler

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
public int getColumnCount(); public int getRowCount(); public Object getValueAt(int rowIndex, int columnIndex);

şeklinde tanımlı. Elbette bu yöntemler dışında AbstractTableModel'de tanımlı bazı yöntemler ezilebilir.

Burada tablo modeli, bir klasör içerisindeki dosya ve alt klasörleri göstersin. Bunun için tablo modeli gereçekleştiren sınıfta klasöre ait bir değişken olması yeterlidir. Örnekte üç sütun bulunmaktadır. Dosya adı, boyuru ve yaratılma tarihi. Bu bilgileri verecek şekilde tablo modelini gerçekleştirmek için

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
private File directory; public TableModelTest(File directory){ this.directory=directory; } public int getColumnCount(){ return 3; } public int getRowCount(){ File[] files=directory.listFiles(); return files.length; } public Object getValueAt(int rowIndex, int columnIndex){ File[] files=directory.listFiles(); File file=files[rowIndex]; if(columnIndex==0){ return file.getName(); }else if(columnIndex==1){ if(file.isFile()){ return file.length()+" bayt"; }else{ return ""; } }else if(columnIndex==2){ DateFormat format=DateFormat.getDateInstance(DateFormat.SHORT); Date date=new Date(file.lastModified()); return format.format(date); } return ""; }

şeklinde bir kod sınıfın içine yazlılabilir. Bu sınıfta File tipindeki nesneyi kullanarak yöntemler gerçekleştirilebilir. Sütün sayısı sabitir : 3. Satır sayısı bir klasörün altındaki dosyaların sayısıdır. Bir hücrenin değeri o satırdaki dosyanın çeşitli bilgilerinden gelir. İlk sütundaki adı, ikinci sütunda boyutu ve son sütundada oluşturulma tarihi bulunur. Oluşturma tarihi lastModifed() yöntemiyle milisaniye cinsinden bulunduğu için belli bir tarih biçiminde dönüşütürülüyor.

Gerçekleştirilmesi zorunlu üç yöntem dışında sütun alanlarının belirleyen getColumnName() yöntemi de gerçekleştirilebilir.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
private String[] culumnNames= {"Dosya Adı","Boyut","Son Değiştirilme Tarihi"}; public String getColumnName(int column){ return culumnNames[column]; }

Burada sütun adları dizisi tanımlanmakta yöntemde sütun dizinine göre bir değer döndürülmektedir.


Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


Örneğin tamamı :

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
import javax.swing.*; import javax.swing.table.*; import javax.swing.event.*; import java.awt.*; import java.io.*; import java.util.*; import java.text.*; public class TableModelTest extends AbstractTableModel{ private File directory; private String[] culumnNames= {"Dosya Adı","Boyut","Son Değiştirilme Tarihi"}; public TableModelTest(File directory){ this.directory=directory; } public int getColumnCount(){ return 3; } public int getRowCount(){ File[] files=directory.listFiles(); return files.length; } public String getColumnName(int column){ return culumnNames[column]; } public Object getValueAt(int rowIndex, int columnIndex){ File[] files=directory.listFiles(); File file=files[rowIndex]; if(columnIndex==0){ return file.getName(); }else if(columnIndex==1){ if(file.isFile()){ return file.length()+" bayt"; }else{ return ""; } }else if(columnIndex==2){ DateFormat format=DateFormat.getDateInstance(DateFormat.SHORT); Date date=new Date(file.lastModified()); return format.format(date); } return ""; } public static void main(String[] args){ JFrame frame=new JFrame(); frame.setBounds(100,100,400,300); File directory=new File("C:"); TableModelTest model=new TableModelTest(directory); JTable table=new JTable(model); frame.getContentPane().add(new JScrollPane(table)); frame.setVisible(true); } }

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Konu YazılımMimarı tarafından (17 Şubat 2013 Saat 19:59 ) değiştirilmiştir.
 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet
Cevapla

Etiketler
bileseni, javada, kullanimi, table


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Java Swing/AWT | FX Fonzerelli Java 3 21 Temmuz 2012 19:16
JRE (Java Runtime Engine - Java Çalışma Zamanı Motoru) toXic Java 2 18 Aralık 2011 13:40
Sorun söyleyeyim (Java,JSP,ASP.NET(C#),PL/SQL,jQuery,Java Script,Ajax) J2EE123 Java 2 03 Kasım 2011 12:57
JRE (Java Runtime Engine - Java Çalışma Zamanı Motoru) Stealth Java 1 29 Eylül 2010 22:19