2013-12-03 4 views
1

Привет, я использую java swing, чтобы сделать приложение GUI GUI, которое извлекает данные из mysql и после этого помещает каждую строку в JLabel и добавляет это в определенную Jpanel.добавление большого количества jlabels в jpanel быстро

моя проблема в том, что когда я получаю более 4 тыс. Строк, приложение занимает 0,3 мин, чтобы получить вышеописанный процесс, а время увеличилось по мере увеличения количества строк.

Я рассчитал задержку с mysql, и это было 20,26 сек для каждых 60 тыс. Строк, и когда я рассчитал для приложения, это было почти 2,5 мин для того же количества строк.

так что у меня есть вопрос, который ускорит мое приложение в терминах (mysql, java).

+1

Вам нужно просмотреть все ярлыки одновременно? У вас может быть несколько страниц, и нужно только захватить, скажем, 10-20 строк, необходимых для каждой страницы. – DoubleDouble

+0

Да, но я, но после поиска и чтения 2 ответов, я не буду использовать JLabel, я буду использовать JTable, потому что, поскольку @SuicideClyde, многие объекты создают дорогостоящий и неправильный подход, ребята thnx. –

ответ

5

Извлечь данные из mysql и после этого поместить каждую строку в JLabel и добавить к определенному Jpanel.

  • использование JTable, поиск ResultSetTableModel, TableFromDatabase

моя проблема, когда я выборка более 4k строки приложение займет 0,3 мин , чтобы получить описанную выше процедуру сделано и время увеличивается с увеличением числа строк .

  • 4k находится над человеческими возможностями, чтобы использовать кучу данных при стандартных рабочих часах

я вычисленная задержке от MySQL, и это было 20.26 сек для каждых 6оК строк и когда я вычисленный для приложения было почти 2,5 мин для столько же строк.

  • создать пакетный логик, запустить ResultSet из SwingWorker, publish() каждый 100rows к ResultSetTableModel, TableFromDatabase, то пользователь может увидеть 1-ый 100row вполне мгновенную, остальные строки добавляются из рабочего потока управляется Swing Worker

  • легко, просто и можно разделить один большой запрос на множество запросов, создавать SQL-запрос с нумерацией страниц,

+0

спасибо, положите, у меня есть один вопрос в последнем ответе вашего, вы имеете в виду, что я буду grap каждые 100 строк, и после этого я обновлю Jtable, пока не закончу запрос правильно? –

+0

не отображаемая партия содержит 100 строк из одного большого набора результатов, затем следующие 100rows (и так далее, до конца), обновление для Swing GUI разделяется на частичные обновления – mKorbel

3

Создание объекта - дорогой процесс. Я бы предложил не создавать индивидуальную метку для каждого поля, которое вы извлекли из своей БД. Есть ли причина, по которой вы решили не использовать JTable/TableModel? Похоже, это был бы лучший инструмент для представления таблицы данных в вашей базе данных. Есть много примеров использования JTable в Интернете, поэтому я не буду описывать это здесь.

В качестве эксперимента, чтобы определить, способствует ли создание JLabel вашей проблеме, создайте единую метку для каждой строки вместо одной JLabel для каждого поля и посмотрите, насколько это улучшает ситуацию.

Я также предлагаю второе предложение mKorbel обрабатывать вещи в пакетном режиме, если требуется немедленная реакция. Это позволяет вам предоставлять некоторые мгновенные данные вашим пользователям во время запроса и представления остальной информации, когда она станет доступной.

Это отлично подходит для ваших больших наборов данных, если пользователю не нужна вся информация, прежде чем вы сможете принять решение или сделать требуемый вывод (то есть - решить проблему, вызвавшую их запрос на первом месте) , Если это так, индикатор занятости может быть лучшим.

Удачи вам!

Смежные вопросы