Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Yine yeni yeniden bir java sorusuyla karsınızdayım:)


Stblack

Öne çıkan mesajlar


while(tableCount<=40){

jTable4.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {
{ reg[0], reg
[1], reg
[2], reg
[3], reg
[4]},

{reg
[0], reg
[1], reg
[2], reg
[3], reg
[4]},

{reg
[0], reg
[1], reg
[2], reg
[3], reg
[4]},

{reg
[0], reg
[1], reg
[2], reg
[3], reg
[4]}
},
new String [] {
"Address", "Title 2", "Title 3", "Title 4", "Title 5"
}
));
try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();
}

tableCount+=6;

}



Yapmaya calıstıgım sey su,table'a gelen degerleri saniyede bir update etmeye calısıyorum, fakat hep once loopu dondurup tableCountu 40'a esitliyor ondan sonra degerleri yazdırıyo.Ne yapmalı nasıl yapmalı yardım:)

Mirage: Code tag'ı kullanalım ki kodu okuyabilelim :)
Link to comment
Sosyal ağlarda paylaş

Nette baktim, listener koyuyormussun (veya hali hazirda varmis artik)
sonra fireTableDataChanged() veya fireTableCellUpdated falan cakiyormussun (eger kullandigin sey bi TableModel ise, ve tekrardan uyariyorum swing e dokunmadim hayatimda :) )

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/AbstractTableModel.html

Burdaki tutorial'a goz at bence
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#simple
Link to comment
Sosyal ağlarda paylaş

TableModel'i kullanış şeklinde yanlış öncelikle. While döngüsü içinde her iterasyonda setModel ile modeli tamamen değiştiriyorsun. Modeli başlangıçta bir kere koyacaksın. Sonra da yapacağın değişiklikleri doğrudan model üstünde yapacaksın. Sen yaptığın değişiklikleri tableCount üstünde yapıp sonra yeni model yaratıyorsun.

Şu forumda aynı şeyi JList için anlatmıştım: http://forum.paticik.com/read.php?6,4090393,4090393#msg-4098065

Aynı şey JTable için de geçerli. Takıldığın bir yer olursa sorarsın yine.

Edit: Yok ben yine de böyle yapcam diyorsan. Thread.sleep öncesinde jTable4.updateUI() ile bir update yapmayı deneyebilirsin.
Link to comment
Sosyal ağlarda paylaş

Tek bir hücreyi değiştirmek için row ve column index vererek şu metodu kullanabilirsin: AbstractTableModel.setValueAt(Object aValue, int rowIndex, int columnIndex)

DefaultTableModel class'ında setValueAt dışında addRow, addColumn, moveRow benzeri bir çok metod var kullanabileceğin.

Bütün verileri toptan değiştirmek istersen de setDataVector diye bir metod var.
Link to comment
Sosyal ağlarda paylaş

Ya benim temelde bir eksiklik kalmıs sanırım.Simdi soyle bir sorum olacak.Simdi mesela benim yazdıgım ilk kodda, once degerleri degistirip sonra interfacei goruntuluyor.Bunu once interfacei goruntule ,sonra degistir seklinde nasıl degistirilir, dedigim gibi o kısımda buyuk bir sorun var sanırım dusundum dusundum isleyisini tam olarak canlandıramadım kafamda
Link to comment
Sosyal ağlarda paylaş

Yukarda anlattığım gibi, modeli kullanışın yanlış olduğundan güncellenmiyor arayüzün. Değişikliklerini model üstünde yaparsan sorunu çözersin. Yukarda verdiğim linkteki örneğe Thread.sleep ekleyince istediğin gibi bir şey oluyor mesela:

Thread.sleep ile güncellenen JList


import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;


public class MainFrame extends JFrame {

private DefaultListModel members = new DefaultListModel();

public MainFrame() {
super("Hello Pati!");
this.setSize(400, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(new JList(members));
}

public static void main(String ... args) throws InterruptedException {
MainFrame frame = new MainFrame();
frame.setVisible(true);

while (true) {
Thread.sleep(1000);
frame.members.addElement("Hasan");
}

}

}



Bu JList için. JTable için de DefaultListModel yerine DefaultTableModel kullancaksın vs. API'ye bakman lazım detaylar için.
Link to comment
Sosyal ağlarda paylaş

×
  • Yeni Oluştur...