bagaimana cara refresh jtable

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

bagaimana cara refresh jtable

onsir salman
bagaimana cara refresh jtable
saya sdh menampilkan data dari table ke jtable, lalu
pada saat terjadi perubahan data pada saat saya klik
btnRefresh data yg di jtable terrefresh (terbaru).
berikut kode yg saya gunakan utk menampilkan data
atas bantuannya saya ucapkan terima kasih

SQL="select * from karyawan";
stmt= con.createStatement();
rs=stmt.executeQuery(SQL);
ResultSetMetaData  meta = rs.getMetaData();
String[] header = {"Absensi.ID","Nama"};
int col = meta.getColumnCount();            
int baris = 0;
                       
     while(rs.next())
           { baris = rs.getRow();}
           
            dataTable = new Object[baris][col];
            int x = 0;
            rs.beforeFirst();
            while(rs.next()) {
                dataTable[x][0] =
rsAmbilData.getString("AbsensiID");
                dataTable[x][1] =
rsAmbilData.getString("NamaKaryawan");
                x++;
            }
tblShift.setModel(new
DefaultTableModel(dataTable,header) {
            boolean[] canEdit = new boolean [] {
false, false };
            public boolean isCellEditable(int
rowIndex,int columnIndex) {
            return canEdit [columnIndex];
            }
            });


      ________________________________________________________
Bergabunglah dengan orang-orang yang berwawasan, di di bidang Anda! Kunjungi Yahoo! Answers saat ini juga di http://id.answers.yahoo.com/
Reply | Threaded
Open this post in threaded view
|

Re: bagaimana cara refresh jtable

echo_khannedy
coba pake Threading mazzz!!

--- In [hidden email], onsir salman
<onsirsalman@...> wrote:

>
> bagaimana cara refresh jtable
> saya sdh menampilkan data dari table ke jtable, lalu
> pada saat terjadi perubahan data pada saat saya klik
> btnRefresh data yg di jtable terrefresh (terbaru).
> berikut kode yg saya gunakan utk menampilkan data
> atas bantuannya saya ucapkan terima kasih
>
> SQL="select * from karyawan";
> stmt= con.createStatement();
> rs=stmt.executeQuery(SQL);
> ResultSetMetaData  meta = rs.getMetaData();
> String[] header = {"Absensi.ID","Nama"};
> int col = meta.getColumnCount();            
> int baris = 0;
>                        
>      while(rs.next())
>            { baris = rs.getRow();}
>            
>             dataTable = new Object[baris][col];
>             int x = 0;
>             rs.beforeFirst();
>             while(rs.next()) {
>                 dataTable[x][0] =
> rsAmbilData.getString("AbsensiID");
>                 dataTable[x][1] =
> rsAmbilData.getString("NamaKaryawan");
>                 x++;
>             }
> tblShift.setModel(new
> DefaultTableModel(dataTable,header) {
>             boolean[] canEdit = new boolean [] {
> false, false };
>             public boolean isCellEditable(int
> rowIndex,int columnIndex) {
>             return canEdit [columnIndex];
>             }
>             });
>
>
>       ________________________________________________________
> Bergabunglah dengan orang-orang yang berwawasan, di di bidang Anda!
Kunjungi Yahoo! Answers saat ini juga di http://id.answers.yahoo.com/
>


Reply | Threaded
Open this post in threaded view
|

Re: bagaimana cara refresh jtable

Bayu Cahya P
In reply to this post by onsir salman
On Monday 04 February 2008 15:10:54 onsir salman wrote:
> bagaimana cara refresh jtable
> saya sdh menampilkan data dari table ke jtable, lalu
> pada saat terjadi perubahan data pada saat saya klik
> btnRefresh data yg di jtable terrefresh (terbaru).

Mas Onsir, jika anda menggunakan Netbeans 6, sebagai salah satu
contoh/referensi, anda bisa menggunakan sample aplikasi java desktop
application -> database application.

Silahkan anda melihat pola kerja dari sample aplikasi tersebut. Hal yang perlu
diperhatikan adalah anda harus memahami tentang konsep threading yang
berjalan di Swing.

Pengetahuan tentang Swing threading sangat diperlukan disini. Kenapa hal ini
penting, salah satu tujuannya adalah kita harus menjaga bahwa aplikasi
GUI/Swing yang kita buat harus responsive. Secara prinsip, hal hal yang
terkait dengan tampilan/GUI di swing secara langsung akan berhubungan dengan
thread yang mempunyai nama Event Dispatch Thread (EDT).

Terkait dengan EDT, maka nantinya kita juga dihadapkan dengan class
SwingWorker. Dalam contoh di aplikasi desktop Netbeans 6, kita akan
menggunakan class Task (turunan dari class SwingWorker) untuk memudahkan kita
dalam mengelola 'suatu pekerjaan yang memerlukan waktu yang panjang'.

Disample tersebut, juga terdapat kode untuk melakukan refresh table.
Walaupun sample tersebut menggunakan model persistency standar (JPA?),
setidaknya kita bisa merubah kode tersebut menggunakan sinktaksis JDBC yang
mas Onsir gunakan.

HTH,
Bayu
anothernetbeansnewbie

Reply | Threaded
Open this post in threaded view
|

Re: Re: bagaimana cara refresh jtable

Martinus Ady H (Milis)
In reply to this post by echo_khannedy
echo_khannedy wrote:

>
>
> coba pake Threading mazzz!!
>
> --- In [hidden email]
> <mailto:netbeans-indonesia%40yahoogroups.com>, onsir salman
> <onsirsalman@...> wrote:
>  >
>  > bagaimana cara refresh jtable
>  > saya sdh menampilkan data dari table ke jtable, lalu
>  > pada saat terjadi perubahan data pada saat saya klik
>  > btnRefresh data yg di jtable terrefresh (terbaru).
>  > berikut kode yg saya gunakan utk menampilkan data
>  > atas bantuannya saya ucapkan terima kasih
>  >
>  > SQL="select * from karyawan";
>  > stmt= con.createStatement();
>  > rs=stmt.executeQuery(SQL);
>  > ResultSetMetaData meta = rs.getMetaData();
>  > String[] header = {"Absensi.ID","Nama"};
>  > int col = meta.getColumnCount();
>  > int baris = 0;
>  >
>  > while(rs.next())
>  > { baris = rs.getRow();}
>  >
>  > dataTable = new Object[baris][col];
>  > int x = 0;
>  > rs.beforeFirst();
>  > while(rs.next()) {
>  > dataTable[x][0] =
>  > rsAmbilData.getString("AbsensiID");
>  > dataTable[x][1] =
>  > rsAmbilData.getString("NamaKaryawan");
>  > x++;
>  > }
>  > tblShift.setModel(new
>  > DefaultTableModel(dataTable,header) {
>  > boolean[] canEdit = new boolean [] {
>  > false, false };
>  > public boolean isCellEditable(int
>  > rowIndex,int columnIndex) {
>  > return canEdit [columnIndex];
>  > }
>  > });
>  >
>  >
>  > ________________________________________________________
>  > Bergabunglah dengan orang-orang yang berwawasan, di di bidang Anda!
> Kunjungi Yahoo! Answers saat ini juga di http://id.answers.yahoo.com/ 
> <http://id.answers.yahoo.com/>
>  >
>
>

Kalau mau cepet bisa pakai jTabel.repaint();

--
Martinus Ady H
http://martinusadyh.web.id/
Reply | Threaded
Open this post in threaded view
|

Re: Re: bagaimana cara refresh jtable

Ifnu bima
Hi,

>  Kalau mau cepet bisa pakai jTabel.repaint();

hm, saran ini tidak tepat sepertinya, karena data dari JTable diambil
dari database maka proses repaint() sebenernya hanya menampilkan
kembali data dari DataModel yang sekarang, tidak serta merta mengambil
data dari database dan sekaligus mengupdate tampilan JTable agar
sinkron dengan data dari database.

Cara paling sering saya lakukan adalah dengan membuat TableModel dari
database. Setiap kali ditekan btn refresh maka akan dibuat kembali
TableModel baru yang mengambil kembali data dari database.

Saya pernah membuat tutorial bagaimana caranya membuat TableModel dari
resultset :

http://www.nagasakti.or.id/roller/Ifnu/entry/200701251

agar setiap kali btnrefresh ditekan maka data dalam JTable akan
terupdate lakukan langkah2 berikut:

1. klik kanan di bagian btnrefresh, kemudian pilih menu:
event->action->actionPerformed
2. di jendela kode yang terbuka masukkan kode-kode :
    - mengeksekusi query dari statement agar melakukan query ulang

       SQL="select * from karyawan";
       stmt= con.createStatement();
       rs=stmt.executeQuery(SQL);

    - buat instance tablemodel yang baru dari resultset yang baru saja
dieksekusi diatas

       TableModel model = ResultsetTableModel(rs);
       jTable1.setModel(model);

    - close statement
      stmt.close();

dengan cara diatas, maka setiap kali btnrefresh ditekan maka JTable
akan direfresh.

saya perlu ingatkan, cara diatas adalah cara paling sederhana, tidak
ada thread dan harus berhati-hati untuk data yang besar, karena
datanya akan diload semua nih.

cara yang lebih elegan lagi adalah dengan menggunakan BeansBinding (JSR295)

http://www.netbeans.org/kb/60/java/gui-binding.html

http://weblogs.java.net/blog/fabriziogiudici/archive/2008/01/beansbinding_no.html


semoga bermanfaat

--
http://www.nagasakti.or.id/roller/ifnu
http://www.nagasakti.or.id/roller/Ifnu/entry/training_java_ee_4_hari
regards
Reply | Threaded
Open this post in threaded view
|

Re: bagaimana cara refresh jtable

danywhy
In reply to this post by onsir salman
kalo perubahan datanya om buat melalui DefaultTableModelnya, om bisa
pake method addRow(Object[] rowData) untuk masukkan data dan
setValueAt(Object aValue, int row, int column) untuk update dari
class DefaultTableModel, saat method ini dijalankan om gak perlu
repot2 lagi refresh JTablenya, karena DefaultTableModel dah punya
penanganan sendiri untuk refresh JTable. Artinya gak usah pake
segala method fire2 itu :)

--- In [hidden email], onsir salman
<onsirsalman@...> wrote:

>
> bagaimana cara refresh jtable
> saya sdh menampilkan data dari table ke jtable, lalu
> pada saat terjadi perubahan data pada saat saya klik
> btnRefresh data yg di jtable terrefresh (terbaru).
> berikut kode yg saya gunakan utk menampilkan data
> atas bantuannya saya ucapkan terima kasih
>
> SQL="select * from karyawan";
> stmt= con.createStatement();
> rs=stmt.executeQuery(SQL);
> ResultSetMetaData  meta = rs.getMetaData();
> String[] header = {"Absensi.ID","Nama"};
> int col = meta.getColumnCount();            
> int baris = 0;
>                        
>      while(rs.next())
>            { baris = rs.getRow();}
>            
>             dataTable = new Object[baris][col];
>             int x = 0;
>             rs.beforeFirst();
>             while(rs.next()) {
>                 dataTable[x][0] =
> rsAmbilData.getString("AbsensiID");
>                 dataTable[x][1] =
> rsAmbilData.getString("NamaKaryawan");
>                 x++;
>             }
> tblShift.setModel(new
> DefaultTableModel(dataTable,header) {
>             boolean[] canEdit = new boolean [] {
> false, false };
>             public boolean isCellEditable(int
> rowIndex,int columnIndex) {
>             return canEdit [columnIndex];
>             }
>             });
>
>
>       ________________________________________________________
> Bergabunglah dengan orang-orang yang berwawasan, di di bidang
Anda! Kunjungi Yahoo! Answers saat ini juga di
http://id.answers.yahoo.com/
>


Reply | Threaded
Open this post in threaded view
|

Re: bagaimana cara refresh jtable

echo_khannedy
tapi tetep aja buat load database nya harus refresh dulu karena
DefaultTableModel tuh gak memiliki utilitas concurrency yang dapat
secara berkesinambungan mendeteksi perubahan database...!!

--- In [hidden email], "danywhy" <danywhy@...> wrote:

>
> kalo perubahan datanya om buat melalui DefaultTableModelnya, om bisa
> pake method addRow(Object[] rowData) untuk masukkan data dan
> setValueAt(Object aValue, int row, int column) untuk update dari
> class DefaultTableModel, saat method ini dijalankan om gak perlu
> repot2 lagi refresh JTablenya, karena DefaultTableModel dah punya
> penanganan sendiri untuk refresh JTable. Artinya gak usah pake
> segala method fire2 itu :)
>
> --- In [hidden email], onsir salman
> <onsirsalman@> wrote:
> >
> > bagaimana cara refresh jtable
> > saya sdh menampilkan data dari table ke jtable, lalu
> > pada saat terjadi perubahan data pada saat saya klik
> > btnRefresh data yg di jtable terrefresh (terbaru).
> > berikut kode yg saya gunakan utk menampilkan data
> > atas bantuannya saya ucapkan terima kasih
> >
> > SQL="select * from karyawan";
> > stmt= con.createStatement();
> > rs=stmt.executeQuery(SQL);
> > ResultSetMetaData  meta = rs.getMetaData();
> > String[] header = {"Absensi.ID","Nama"};
> > int col = meta.getColumnCount();            
> > int baris = 0;
> >                        
> >      while(rs.next())
> >            { baris = rs.getRow();}
> >            
> >             dataTable = new Object[baris][col];
> >             int x = 0;
> >             rs.beforeFirst();
> >             while(rs.next()) {
> >                 dataTable[x][0] =
> > rsAmbilData.getString("AbsensiID");
> >                 dataTable[x][1] =
> > rsAmbilData.getString("NamaKaryawan");
> >                 x++;
> >             }
> > tblShift.setModel(new
> > DefaultTableModel(dataTable,header) {
> >             boolean[] canEdit = new boolean [] {
> > false, false };
> >             public boolean isCellEditable(int
> > rowIndex,int columnIndex) {
> >             return canEdit [columnIndex];
> >             }
> >             });
> >
> >
> >       ________________________________________________________
> > Bergabunglah dengan orang-orang yang berwawasan, di di bidang
> Anda! Kunjungi Yahoo! Answers saat ini juga di
> http://id.answers.yahoo.com/
> >
>


Reply | Threaded
Open this post in threaded view
|

Re: bagaimana cara refresh jtable

Ifnu bima
Pengecekan database oleh table secara berkesinambungan?cr ini ga
bahaya ya?byasanya berapa lm diceknya?kalau usernya bnyak ga bahaya
kah?

On 2/5/08, echo_khannedy <[hidden email]> wrote:

> tapi tetep aja buat load database nya harus refresh dulu karena
> DefaultTableModel tuh gak memiliki utilitas concurrency yang dapat
> secara berkesinambungan mendeteksi perubahan database...!!
>
> --- In [hidden email], "danywhy" <danywhy@...> wrote:
> >
> > kalo perubahan datanya om buat melalui DefaultTableModelnya, om bisa
> > pake method addRow(Object[] rowData) untuk masukkan data dan
> > setValueAt(Object aValue, int row, int column) untuk update dari
> > class DefaultTableModel, saat method ini dijalankan om gak perlu
> > repot2 lagi refresh JTablenya, karena DefaultTableModel dah punya
> > penanganan sendiri untuk refresh JTable. Artinya gak usah pake
> > segala method fire2 itu :)
> >
> > --- In [hidden email], onsir salman
> > <onsirsalman@> wrote:
> > >
> > > bagaimana cara refresh jtable
> > > saya sdh menampilkan data dari table ke jtable, lalu
> > > pada saat terjadi perubahan data pada saat saya klik
> > > btnRefresh data yg di jtable terrefresh (terbaru).
> > > berikut kode yg saya gunakan utk menampilkan data
> > > atas bantuannya saya ucapkan terima kasih
> > >
> > > SQL="select * from karyawan";
> > > stmt= con.createStatement();
> > > rs=stmt.executeQuery(SQL);
> > > ResultSetMetaData  meta = rs.getMetaData();
> > > String[] header = {"Absensi.ID","Nama"};
> > > int col = meta.getColumnCount();
> > > int baris = 0;
> > >
> > >      while(rs.next())
> > >            { baris = rs.getRow();}
> > >
> > >             dataTable = new Object[baris][col];
> > >             int x = 0;
> > >             rs.beforeFirst();
> > >             while(rs.next()) {
> > >                 dataTable[x][0] =
> > > rsAmbilData.getString("AbsensiID");
> > >                 dataTable[x][1] =
> > > rsAmbilData.getString("NamaKaryawan");
> > >                 x++;
> > >             }
> > > tblShift.setModel(new
> > > DefaultTableModel(dataTable,header) {
> > >             boolean[] canEdit = new boolean [] {
> > > false, false };
> > >             public boolean isCellEditable(int
> > > rowIndex,int columnIndex) {
> > >             return canEdit [columnIndex];
> > >             }
> > >             });
> > >
> > >
> > >       ________________________________________________________
> > > Bergabunglah dengan orang-orang yang berwawasan, di di bidang
> > Anda! Kunjungi Yahoo! Answers saat ini juga di
> > http://id.answers.yahoo.com/
> > >
> >
>
>
>


--
http://www.nagasakti.or.id/roller/ifnu
http://www.nagasakti.or.id/roller/Ifnu/entry/training_java_ee_4_hari
regards
Reply | Threaded
Open this post in threaded view
|

Re: bagaimana cara refresh jtable

danywhy
In reply to this post by echo_khannedy
bukan load database tepatnya, tapi ngecek apakah method insert ke db
berhasil apa engga.
contoh :

public int sqlinsert() {
    // method insert ke database
}

if (sqlInsert() != 0) {
    // jalankan method addRow(Object[] rowData)
    // atau method setValueAt(Object aValue, int row, int column)
}

--- In [hidden email], "echo_khannedy"
<echo_khannedy@...> wrote:
>
> tapi tetep aja buat load database nya harus refresh dulu karena
> DefaultTableModel tuh gak memiliki utilitas concurrency yang dapat
> secara berkesinambungan mendeteksi perubahan database...!!
>
> --- In [hidden email], "danywhy" <danywhy@>
wrote:
> >
> > kalo perubahan datanya om buat melalui DefaultTableModelnya, om
bisa
> > pake method addRow(Object[] rowData) untuk masukkan data dan
> > setValueAt(Object aValue, int row, int column) untuk update dari
> > class DefaultTableModel, saat method ini dijalankan om gak perlu
> > repot2 lagi refresh JTablenya, karena DefaultTableModel dah
punya

> > penanganan sendiri untuk refresh JTable. Artinya gak usah pake
> > segala method fire2 itu :)
> >
> > --- In [hidden email], onsir salman
> > <onsirsalman@> wrote:
> > >
> > > bagaimana cara refresh jtable
> > > saya sdh menampilkan data dari table ke jtable, lalu
> > > pada saat terjadi perubahan data pada saat saya klik
> > > btnRefresh data yg di jtable terrefresh (terbaru).
> > > berikut kode yg saya gunakan utk menampilkan data
> > > atas bantuannya saya ucapkan terima kasih
> > >
> > > SQL="select * from karyawan";
> > > stmt= con.createStatement();
> > > rs=stmt.executeQuery(SQL);
> > > ResultSetMetaData  meta = rs.getMetaData();
> > > String[] header = {"Absensi.ID","Nama"};
> > > int col = meta.getColumnCount();            
> > > int baris = 0;
> > >                        
> > >      while(rs.next())
> > >            { baris = rs.getRow();}
> > >            
> > >             dataTable = new Object[baris][col];
> > >             int x = 0;
> > >             rs.beforeFirst();
> > >             while(rs.next()) {
> > >                 dataTable[x][0] =
> > > rsAmbilData.getString("AbsensiID");
> > >                 dataTable[x][1] =
> > > rsAmbilData.getString("NamaKaryawan");
> > >                 x++;
> > >             }
> > > tblShift.setModel(new
> > > DefaultTableModel(dataTable,header) {
> > >             boolean[] canEdit = new boolean [] {
> > > false, false };
> > >             public boolean isCellEditable(int
> > > rowIndex,int columnIndex) {
> > >             return canEdit [columnIndex];
> > >             }
> > >             });
> > >
> > >
> > >       ________________________________________________________
> > > Bergabunglah dengan orang-orang yang berwawasan, di di bidang
> > Anda! Kunjungi Yahoo! Answers saat ini juga di
> > http://id.answers.yahoo.com/
> > >
> >
>


Reply | Threaded
Open this post in threaded view
|

Re: bagaimana cara refresh jtable

danywhy
In reply to this post by Ifnu bima
bila aplikasinya client server, saya pribadi akan menghindari
pengecekan database oleh table secara berkesinambungan, bila data di
database sudah banyak, reload pada JTable akan menyebabkan freeze,
kecuali kita bikin thread sendiri untuk keluar dari EDT.

--- In [hidden email], "Ifnu _" <ifnubima@...>
wrote:
>
> Pengecekan database oleh table secara berkesinambungan?cr ini ga
> bahaya ya?byasanya berapa lm diceknya?kalau usernya bnyak ga bahaya
> kah?
>
> On 2/5/08, echo_khannedy <echo_khannedy@...> wrote:
> > tapi tetep aja buat load database nya harus refresh dulu karena
> > DefaultTableModel tuh gak memiliki utilitas concurrency yang
dapat
> > secara berkesinambungan mendeteksi perubahan database...!!
> >
> > --- In [hidden email], "danywhy" <danywhy@>
wrote:
> > >
> > > kalo perubahan datanya om buat melalui DefaultTableModelnya,
om bisa
> > > pake method addRow(Object[] rowData) untuk masukkan data dan
> > > setValueAt(Object aValue, int row, int column) untuk update
dari
> > > class DefaultTableModel, saat method ini dijalankan om gak
perlu
> > > repot2 lagi refresh JTablenya, karena DefaultTableModel dah
punya

> > > penanganan sendiri untuk refresh JTable. Artinya gak usah pake
> > > segala method fire2 itu :)
> > >
> > > --- In [hidden email], onsir salman
> > > <onsirsalman@> wrote:
> > > >
> > > > bagaimana cara refresh jtable
> > > > saya sdh menampilkan data dari table ke jtable, lalu
> > > > pada saat terjadi perubahan data pada saat saya klik
> > > > btnRefresh data yg di jtable terrefresh (terbaru).
> > > > berikut kode yg saya gunakan utk menampilkan data
> > > > atas bantuannya saya ucapkan terima kasih
> > > >
> > > > SQL="select * from karyawan";
> > > > stmt= con.createStatement();
> > > > rs=stmt.executeQuery(SQL);
> > > > ResultSetMetaData  meta = rs.getMetaData();
> > > > String[] header = {"Absensi.ID","Nama"};
> > > > int col = meta.getColumnCount();
> > > > int baris = 0;
> > > >
> > > >      while(rs.next())
> > > >            { baris = rs.getRow();}
> > > >
> > > >             dataTable = new Object[baris][col];
> > > >             int x = 0;
> > > >             rs.beforeFirst();
> > > >             while(rs.next()) {
> > > >                 dataTable[x][0] =
> > > > rsAmbilData.getString("AbsensiID");
> > > >                 dataTable[x][1] =
> > > > rsAmbilData.getString("NamaKaryawan");
> > > >                 x++;
> > > >             }
> > > > tblShift.setModel(new
> > > > DefaultTableModel(dataTable,header) {
> > > >             boolean[] canEdit = new boolean [] {
> > > > false, false };
> > > >             public boolean isCellEditable(int
> > > > rowIndex,int columnIndex) {
> > > >             return canEdit [columnIndex];
> > > >             }
> > > >             });
> > > >
> > > >
> > > >      
________________________________________________________

> > > > Bergabunglah dengan orang-orang yang berwawasan, di di bidang
> > > Anda! Kunjungi Yahoo! Answers saat ini juga di
> > > http://id.answers.yahoo.com/
> > > >
> > >
> >
> >
> >
>
>
> --
> http://www.nagasakti.or.id/roller/ifnu
>
http://www.nagasakti.or.id/roller/Ifnu/entry/training_java_ee_4_hari
> regards
>