私は申し訳ありませんが、それでもあなたのdoCalculate()メソッドで、私はまだできていませんよあなたの問題を再現する。たとえば、ここに私のsscceです:
import java.awt.event.*;
import java.util.concurrent.ExecutionException;
import javax.swing.*;
public class FooGui {
private static int threads = 0;
private static void createAndShowUI() {
final JLabel label = new JLabel(" ");
JButton button = new JButton("Button");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
new SwingWorker<String, Void>() {
@Override
protected String doInBackground() throws Exception {
return doCalculation();
}
@Override
protected void done() {
try {
label.setText(get());
} catch (InterruptedException e) {
System.out.println("thread was interrupted");
} catch (ExecutionException e) {
System.out.println("there was an ExecutionException");
}
}
}.execute();
}
});
JPanel panel = new JPanel();
panel.add(button);
panel.add(label);
JFrame frame = new JFrame("FooGui");
frame.getContentPane().add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static String doCalculation() {
for (int i = 0; i < 5000000; i++) {
Math.pow(3.14, i);
}
return threads++ + "";
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowUI();
}
});
}
}
あなたは(リンクをチェックしてください)を作成し、独自の"Short, Self Contained, Correct (Compilable), Example" or SSCCEを投稿することもできます。私はこれを作成する過程で、おそらく問題とその解決策を自分自身で見つけることになるでしょう。もしそうなら、ここに戻って私たちに知らせてください。
これは本当の答えではありませんが、このようなコードをコメントに投稿する方法はありません。
私はあなたがこれまでに投稿したコードで明らかに間違っ何も表示されませんが、私はここでの鍵は 'doCalculation()で何が起こっているのかと思い、'メソッド。このコードを投稿できますか? –