Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #38266
| Newsgroups | comp.lang.java.programmer |
|---|---|
| Date | 2018-05-22 13:20 -0700 |
| References | <2ddef1c1-ac37-4384-a3a5-f9b94a1fcbf6@googlegroups.com> <pe1obt$8p6$1@dont-email.me> |
| Message-ID | <6762ff5e-8846-4ea7-be57-7518f2d7ff42@googlegroups.com> (permalink) |
| Subject | Re: how do you block the GUI repaints? |
| From | Eric Douglas <e.d.programmer@gmail.com> |
On Tuesday, May 22, 2018 at 2:43:21 PM UTC-4, Eric Sosman wrote: > On 5/22/2018 1:59 PM, Eric Douglas wrote: > > I made a custom JTable, but it has a separate model. I wanted to be able to update a lot of cell values and just have it repaint the whole table when I'm done, so I just made a custom model, overrode the fire method to not tell it to repaint while I'm loading it, and call one fireTableChanged when I'm done. > > > > Now what's the easiest way to do this with other controls? I made a custom JTextArea, I try to insert a lot of text one chunk at a time, and it locks up the EDT issuing repaint requests. > > You're on the right track: Do it in the model. For example, > the TableModel you implemented replaces > > update cell > fire event > update cell > fire event > update cell > fire event > ... > > with > > update cell > update cell > update cell > ... > fire mega-event > > and you could, perhaps, go on to > > bulk-update many cells > fire mega-event > > Do similarly with the other controls that bother you. > > Also (and depending on the nature of your updates), you may > gain by firing "specific" events instead of "catch-all" events. > For example, a JTable might be more responsive if its model fired > events reporting updates to three individual cells than if it > fired "the whole table changed" events. (This goes somewhat > against the "fire mega-event" suggestion above, but that just > means that engineering is the art of striking balances.) > My JTable is working great. I just ran a query and it took me about 10 seconds to return 59990 rows and put it all in the table. That's 25 columns, individually doing a setValue for 1499750 cells. This takes a lot longer if it's trying to repaint the table after every set. If you're doing a full load you can just fireTableChanged one time at the end. If you already have thousands of rows and you're updating a few dozen, a fireTableRowsUpdated may be more efficient, though there wasn't really a noticeable delay with my "fire mega event". JTextArea is my next big control. Normally we just do one insert, as we just use it to display about a dozen lines of text at a time. Now I'm trying to make a file viewer. I tried loading a text file into any number of text file editors but they just crash because it's too big (email dump). I wanted to see if I can load the whole thing at once into a JTextArea. If not I want to get as much as possible, then I can remove text if necessary to add more, with first/previous/next/last buttons to scroll through the file. I have no problem reading multiple chunks from any point in the file, but I can't call the JTextArea insert multiple times in a row without locking up the EDT because it wants to repaint every time.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
how do you block the GUI repaints? Eric Douglas <e.d.programmer@gmail.com> - 2018-05-22 10:59 -0700
Re: how do you block the GUI repaints? Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2018-05-22 13:22 -0500
Re: how do you block the GUI repaints? Eric Douglas <e.d.programmer@gmail.com> - 2018-05-22 13:00 -0700
Re: how do you block the GUI repaints? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-05-22 16:29 -0400
Re: how do you block the GUI repaints? Eric Douglas <e.d.programmer@gmail.com> - 2018-05-22 13:51 -0700
Re: how do you block the GUI repaints? Martin Gregorie <martin@mydomain.invalid> - 2018-05-22 21:41 +0000
Re: how do you block the GUI repaints? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-05-22 18:03 -0400
Re: how do you block the GUI repaints? Andreas Leitgeb <avl@logic.at> - 2018-05-22 22:22 +0000
Re: how do you block the GUI repaints? Eric Douglas <e.d.programmer@gmail.com> - 2018-05-23 07:55 -0700
Re: how do you block the GUI repaints? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-05-23 11:06 -0400
Re: how do you block the GUI repaints? Eric Douglas <e.d.programmer@gmail.com> - 2018-05-23 08:19 -0700
Re: how do you block the GUI repaints? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-05-22 14:43 -0400
Re: how do you block the GUI repaints? Eric Douglas <e.d.programmer@gmail.com> - 2018-05-22 13:20 -0700
Re: how do you block the GUI repaints? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-05-22 22:47 +0200
Re: how do you block the GUI repaints? Eric Douglas <e.d.programmer@gmail.com> - 2018-05-22 13:58 -0700
Re: how do you block the GUI repaints? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-05-23 04:30 +0200
Re: how do you block the GUI repaints? Eric Douglas <e.d.programmer@gmail.com> - 2018-05-23 05:54 -0700
Re: how do you block the GUI repaints? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-05-23 15:58 +0200
Re: how do you block the GUI repaints? Eric Douglas <e.d.programmer@gmail.com> - 2018-05-23 07:26 -0700
Re: how do you block the GUI repaints? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-05-23 16:30 +0200
Re: how do you block the GUI repaints? Eric Douglas <e.d.programmer@gmail.com> - 2018-05-23 07:48 -0700
Re: how do you block the GUI repaints? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-05-23 18:46 +0200
Re: how do you block the GUI repaints? Eric Douglas <e.d.programmer@gmail.com> - 2018-05-23 10:51 -0700
Re: how do you block the GUI repaints? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-05-23 22:35 +0200
csiph-web