Tak jak napisałem, użyj
http://download.oracle.com/javase/7/docs/api/javax/swing/JTable.html#prepareRenderer%28javax.swing.table.TableCellRenderer,%20int,%20int%29
JTable to jeden z najbardziej skomplikowanych obiektów Swinga i można zrobić z nim rzeczy, o których Tobie (oraz mi również) się nie śniło.
Metody TableColumn.setCellRenderer() używa się do czego innego niż ty potrzebujesz. Czasem nawet bardzo uważne przeczytanie dokumentacji jednej klasy nie wystarcza aby zrozumieć wszystkie zależności w tej klasie.
Dla każdej kolumny tworzysz osobny obiekt renderatora, ale przecież nie masz pojęcia w którym momencie zostanie gdzieś w obiekcie JTable wywołana metoda getTableCellRendererComponent(), a tym samym czy użycie w takiej metodzie Twojej specyficznej metody isSelectedMy() ma w ogóle jakikolwiek sens.
Pomijam już to, że zakładanie a priori iż argument aTable jest na pewno Twoją MyJXTable też jest dość ryzykowne bo nie masz pojęcia co się dzieje wewnątrz nieznanego sobie obiektu, niektóre klasy zwracają różne wrappery i inne wynalazki implementujące ten sam interfejs, ale klasy zupełnie innego typu.
Generalnie wyłącz domniemania i uważnie doczytaj dokumentację. W razie potrzeby wrzuć sobie źródła JTable do swojego IDE i prześledź sobie co się dzieje z obiektami renderującymi.
Weź pod uwagę notę implementacyjną do DefaultTableCellRenderer:
"JTable employs a unique mechanism for rendering its cells and therefore requires some slightly modified behavior from its cell renderer. The table class defines a single cell renderer and uses it as a as a rubber-stamp for rendering all cells in the table; it renders the first cell, changes the contents of that cell renderer, shifts the origin to the new location, re-draws it, and so on."
oraz to:
"The standard JLabel component was not designed to be used this way and we want to avoid triggering a revalidate each time the cell is drawn. This would greatly decrease performance because the revalidate message would be passed up the hierarchy of the container to determine whether any other components would be affected. As the renderer is only parented for the lifetime of a painting operation we similarly want to avoid the overhead associated with walking the hierarchy for painting operations. So this class overrides the validate, invalidate, revalidate, repaint, and firePropertyChange methods to be no-ops and override the isOpaque method solely to improve performance. If you write your own renderer, please keep this performance consideration in mind. "
Jak dla mnie to jest to dość dobrze wyjaśnione.