Я пишу JPanel, который загружает метки в потоке, информация которого берется из столбца таблицы базы данных. Я не верю, что это актуально, потому что загрузка данных не занимает много времени, только «setVisible» занимает некоторое время для обработки.
К сожалению, эффект, который я вижу, заключается в том, что загружаемые ярлыки (скажем, 100 ярлыков) выглядят так, как будто они размещаются по одному за раз. Хотя это случается в течение секунды, я бы предпочел, чтобы сначала была ВСЕ НАГРУЗКА, а затем просто надевался сразу.
Я всегда думал, что когда вы добавляете компонент, все уже сделано, и setVisible (true / false) просто включает и выключает видимость. Но из-за этой проблемы я вижу, что, возможно, это не совсем так.
Вот мой основной метод (я могу предоставить больше кода при необходимости):
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JFrame window = new JFrame();
window.setBounds(100, 100, 450, 300);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.getContentPane().setLayout(new BorderLayout());
JobInfoPanel jobInfoPanel = new JobInfoPanel();
window.getContentPane().add(jobInfoPanel,
BorderLayout.CENTER);
window.pack();
window.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
Что подтверждает мне, что проблема заключается в setVisible, если я добавлю следующий код после window.setVisible (true); возникает та же проблема:
jobInfoPanel.setPanelListVisible(false);
jobInfoPanel.setPanelListVisible(true);
Я перепробовал много вещей, но ничего не работает, включая размещение "jobInfoPanel.setPanelListVisible (false);" перед window.setVisible (true). То же самое происходит.
Единственное решение, которое, я думаю, у меня осталось, это как-то нарисовать эту панель за кадром, а затем быстро переместить ее в правильное место ... если это имеет смысл (я читал это как предложение на некоторых страницах, но эта конкретная проблема поднималась не часто).
Есть ли более простой способ сделать то, что мне нужно?
Любая помощь очень ценится, спасибо.
-Asaf