Не зная полной степени того, что вы пытаетесь сделать, это не совсем возможно для вас точный ответ.
Из звуков вещей, которые вы пытаетесь запустить долго выполняемые задачи в контексте Событие Dispatching Thread.
Блокировка этой нити предотвращает перерисовку Swing.
Из того, что я могу сказать, вы хотите использовать SwingWorker . Это позволит вам выполнять свою работу в фоновом потоке, а повторная синхронизация обновлений обратно в EDT
Обновлена с помощью примера
Я знаю, что вы сказали, что не «хотите» использовать a SwingWorker
, но, честно говоря, это просто проще и безопаснее ...
[/g1]
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingWorker;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class LongRunningTask {
public static void main(String[] args) {
new LongRunningTask();
}
public LongRunningTask() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
new BackgroundWorker().start();
}
});
}
public class BackgroundWorker extends SwingWorker
Да, он может, на самом деле вы всегда должны предполагать, что все, что делается на стороне клиента. может быть изменено, конечно, JavaScript тоже.
Если вы хотите быть уверены, что что-то не будет изменено, вы можете использовать какую-то криптографическую подпись на данных и проверить их на стороне сервера.