Вы, вероятно, создаете 1000+ DefaultMutableTreeNodes, чтобы поместить свой список. Проблема заключается в том, чтобы быстро создать такое количество объектов и преобразовать ваши объекты в DefaultMutableTreeNode. Если вы не создадите все эти объекты, вы можете улучшить свою производительность. Я бы предложил написать свою собственную реализацию TreeModel, которая работает непосредственно с вашей объектной моделью, чтобы вам не приходилось заново создавать столько объектов заново. Это должно значительно улучшить вашу скорость. Я поместил 10 000 объектов в JTree раньше (я сделал это, но, возможно, это была не очень хорошая идея), но мне пришлось написать свой собственный TreeModel, чтобы мне не пришлось воссоздавать эти объекты.
Однако, как и в случае всех проблем с производительностью, вы должны сначала профилировать их, чтобы выяснить, на что вы тратите время, и решить эту проблему. Если выясняется, что это проблема, вы можете это сделать. Вам не нужно пытаться создавать свои собственные графические процедуры рисования, потому что это значительно больше работы, чем написание собственной TreeModel.
Другим вариантом является выбор дерева по требованию. Так что извлекайте корень тогда, когда пользователь расширяет каждый узел, выбирайте его дочерние элементы с сервера. Пользователь не может просматривать все 1000+ узлов одновременно, так что это значительно сократит объем передаваемых данных по сети и сократит время, затрачиваемое на сервер.