Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > Updating JTable Atomically - block data changes while updating.

Reply
Thread Tools

Updating JTable Atomically - block data changes while updating.

 
 
news.rcn.com
Guest
Posts: n/a
 
      12-09-2007
How can I have a JTable update (in response to a TableModelEvent) and
prevent the data model from changing during the update?

I am getting ArrayIndexOutOfBounds exception during update and I believe
this is because the application is deleting rows during the update. I have
used a lock to mutually exclude the application from changing the data model
and the JTable from reading the data; the latter locks the getRowCount(),
getColCount(), and getValueAt() methods. The problem, I believe, is that a
row gets deleted between the time getRowCount() is called and all the
getValueAt()s have been made; the index in error is always one more than the
# of rows.

Is there a way I can have the JTable do the update atomically? That is, make
all it's calls with as a single transaction?

I can't use a more granular TableModelEvent, to specify the rows to update
because the application does not know where in the table the information
will appear. Also, it is not the last row that is being deleted.

Thanks in advance for your help.

jim cant


 
Reply With Quote
 
 
 
 
Daniel Pitts
Guest
Posts: n/a
 
      12-09-2007
news.rcn.com wrote:
> How can I have a JTable update (in response to a TableModelEvent) and
> prevent the data model from changing during the update?
>
> I am getting ArrayIndexOutOfBounds exception during update and I believe
> this is because the application is deleting rows during the update. I have
> used a lock to mutually exclude the application from changing the data model
> and the JTable from reading the data; the latter locks the getRowCount(),
> getColCount(), and getValueAt() methods. The problem, I believe, is that a
> row gets deleted between the time getRowCount() is called and all the
> getValueAt()s have been made; the index in error is always one more than the
> # of rows.
>
> Is there a way I can have the JTable do the update atomically? That is, make
> all it's calls with as a single transaction?
>
> I can't use a more granular TableModelEvent, to specify the rows to update
> because the application does not know where in the table the information
> will appear. Also, it is not the last row that is being deleted.
>
> Thanks in advance for your help.
>
> jim cant
>
>

The trick is to do everything on the Event Dispatch Thread.

Look up EventQueue.invokeLater(). I also suggest reading the book Java
Concurrency In Practice.
<http://virtualinfinity.net/wordpress/technical-book-recommendations/java-concurrency-in-practice/>.

It explains all aspects of dealing with a multi-threaded program. It
may be a little known fact, but most non-trivial Java applications are
multi-threaded. For instance, Swing GUI programs are always multi-threaded.

--
Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>
 
Reply With Quote
 
 
 
 
Roedy Green
Guest
Posts: n/a
 
      12-10-2007
On Sun, 9 Dec 2007 11:29:03 -0500, "news.rcn.com"
<(E-Mail Removed)> wrote, quoted or indirectly quoted someone who
said :

>How can I have a JTable update (in response to a TableModelEvent) and
>prevent the data model from changing during the update?


you would need to make methods or code blocks synchronized to prevent
two threads for executing that code simultaneously.

See http://mindprod.com/jgloss/synchronised.html
http://mindprod.com/jgloss/thread.html

This is much trickier than you might first suppose. You will likely
want to read some books.

--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: atomically thread-safe Meyers singleton impl (fixed)... Chris Thomasson C++ 35 08-01-2008 09:47 AM
Atomically Thread-Safe Mostly Lock-Free Reference Counted Pointer For C... Chris Thomasson C Programming 42 09-22-2007 08:27 AM
How to move data from a CSV file to a JTable, and from a JTable to a CSV file ? Tintin92 Java 1 02-14-2007 06:51 PM
how to atomically move a file and update a database? wrex Ruby 2 06-04-2006 03:39 AM
Threads: does Thread.start() atomically set Thread.__started ? Enigma Curry Python 1 03-15-2006 01:54 PM



Advertisments