Well thats not really programming is it The problem isn't with swing being slow but rather your code being crap. It's not hard to do, to write an interactive swing program you simply need to write multi-threaded code , with care to avoid doing too much non gui work in the swing thread. There is nothing special about it. Actually it was 6000 rows hence why i used thousands and i had a custom table cell renderer. The particular dataset i was using although the program could work with other datasets , was the NCI60 dataset for around 60 different cancers and around 6000 different genes. 6000 features and 60 examples isn't a good idea , thats why feature set selection is important. However 6000 rows is tiny compared to some datasets.