実行に時間がかかるメソッドがあります。それを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
}
});
これを修正する方法のアイデアはありますか?