我有一个可能需要很长时间才能执行的方法。我们称之为longTime();
此方法是从按钮上的动作侦听器调用的。
我想"Please wait.."
在此方法执行时显示一条消息。
问题是Jframe
没有响应,它似乎被卡住或等待某些东西。
重要提示: 的运行时间longTime()
可以不同。只有在超过 2-3 秒时才会出现问题。
我试图做所有这些,invokeLate
但没有帮助。
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
JLabel label = new JLabel("Please wait...");
label.setFont(new Font("Serif", Font.PLAIN, 25));
frame.getContentPane().add(label, BorderLayout.CENTER);
frame.setLocationRelativeTo(null);
frame.setUndecorated(true);
frame.pack();
frame.setAlwaysOnTop(true);
frame.setVisible(true);
try{
longTime(); //HERE IS THE FUNCTION THAT TAKES A LONG TIME
}catch(Exception e){ }
frame.dispose(); //AFTER THE LONG FUNCTION FINISHES, DISPOSE JFRAME
}
});
关于如何解决这个问题的任何想法?