私はJFileChooserを起動するJButtonを持っています。しかし、JFileChooserは、しばしば何も起こっていないと思うかもしれない時間の間に、アップに数秒かかります。私は、JFileChooserが終了するまでボタンを無効にしようとしましたが、JFileChooserがロードされるまで、ボタンの無効化は行われません。私ができることはありますか? マイコード:UIスレッドがそのビジネスについて行っている間に、ボタンが押されたよりもユーザーにフィードバックを提供する方法
public void actionPerformed(ActionEvent e) {
System.err.println("clicked");
((JButton) e.getSource()).setEnabled(false);
System.err.println("set");
JFileChooser b = new JFileChooser("C:\\");
b.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int res = b.showOpenDialog((Component) e.getSource());
if (res == JFileChooser.APPROVE_OPTION) {
try {
//Blah
}
catch (Exception err) {
JDialog j = new JDialog(window, "An error occured:\n" + err.getMessage());
}
}
((JButton) e.getSource()).setEnabled(true);
}
ありがとう、それは私が必要としたものです。それでも、私がやろうとしていることをする方法はありますか?私は、ある時点でこれほど少し遅いものをやりたいと思うかもしれないという印象を受けます。それはそれ自体のスレッドに値するものではありません。 –
アクションが完了するまで単にボタンを無効にする簡単な方法はありませんか? SwingWorkerでスローパート(JFileChooserを作成する)を実行しても、JFileChooserがロードされる前にアクションが終了するか、またはボタンがまだロードされていない状態では無効にならないという印象を受けます。 –
ファイルチューザが一度しか作成されないアプローチの場合、最後のファイルが選択された場所からディレクトリを保存すると非常にユーザーフレンドリーです。次にユーザーがそのボタンを押すと、そのディレクトリに開かれているファイルチューザーが表示されます。 – Robin