JApplet 内の JLabel の更新に問題があります。SwingUtils.invokeLater を使用していますが、アプレットがブラウザ内にあると機能しません。NetBeans アプレット ビューアでテストすると正常に動作しますが、現在はブラウザで動作します。最初に呼び出したときにのみ更新されますsendMessage("Starting test 1");
が、他の呼び出しsendMessage
は GUI アプレットを更新しません。任意のヒント?
いくつかの計算を実行するクラスは次のとおりです。
public abstract class ConDiagnoseTool implements Runnable{
@Override
public void run(){
String result = "";
try {
sendMessage("Starting test 1");
result += execute();
result += execute();
sendMessage("Starting test 2");
result += execute();
sendMessage("Starting test 3");
result += execute();
} catch (IOException e) {
result += e.toString();
}
sendResult(result);
sendMessage("Test finished.");
}
[...]
[...]
abstract void sendMessage(final String message);
abstract void sendResult(final String result);
}
ここでは、抽象メソッドを実装して呼び出し、GUI スレッドを呼び出します。
private void btnStartActionPerformed(java.awt.event.ActionEvent evt) {
new Thread(new ConDiagnoseTool() {
@Override
void sendMessage(final String message) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
jStatus.setText(message);
}
});
}
@Override
void sendResult(final String result) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
jResult.setText(result);
}
});
}
}).start();
btnStart.setEnabled(false);
}
読んでくれてありがとう!