0

重複の可能性:
HTML に JLabel を含む Java アプレットが表示されない

Java アプレットの次のコード ソースがあります。

package m2mcom.web;
import m2mcom.entities.AutomatedTelnetClient;
import javax.swing.JApplet;
import javax.swing.SwingUtilities;
import javax.swing.JLabel;

public class Displaytext extends JApplet {
//Called when this applet is loaded into the browser.
public void init() {
    //Execute a job on the event-dispatching thread; creating this applet's GUI.
    try {
        SwingUtilities.invokeAndWait(new Runnable() {
            public void run() {
                AutomatedTelnetClient telnet = new AutomatedTelnetClient();
                String answer = telnet.request();
                JLabel lbl = new JLabel(answer);
                add(lbl);
            }
        });
    } catch (Exception e) {
        System.err.println("createGUI didn't complete successfully");
    }
}
}

AutomatedTelnetClient クラスで telnet 要求が行われ、応答が得られると、セッションも閉じられます。.html ファイルを実行すると、何も描画されず、画面が空になります。なぜそのように振る舞うかは誰でも知っています。文字列をアプレットに追加する他の方法はありますか? 問題は SwingUtilities の inovkeAndWait ではないでしょうか?

これはHTMLです:

<HTML>
<HEAD>
</HEAD>
<BODY>
<div >
<APPLET CODE="m2mcom.web.Displaytext.class" WIDTH="800" HEIGHT="500">
</APPLET>
</div>
</BODY>
</HTML>
4

1 に答える 1

0

実行しないでください

AutomatedTelnetClient telnet = new AutomatedTelnetClient();

SwingUtilitiesスレッドで。b /ctelnet要求は非同期呼び出しである可能性が非常に高いです。スレッドを使用せずに上記のコードを直接実行してみて、何が得られるかを確認してください。

- -アップデート - -

もう1つの問題は、アプレットのcontentPaneコンポーネントにラベルを追加する以下のコードの最後の行である可能性があります。これが問題になる可能性があります。

これらの2つの修正が機能しない場合は、AutomatedTelnetClientクラスロジックに問題がある可能性があります。

package m2mcom.web;
import m2mcom.entities.AutomatedTelnetClient;
import javax.swing.JApplet;
import javax.swing.SwingUtilities;
import javax.swing.JLabel;

public class Displaytext extends JApplet {
//Called when this applet is loaded into the browser.
public void init() {
    //Execute a job on the event-dispatching thread; creating this applet's GUI.
    try {

                AutomatedTelnetClient telnet = new AutomatedTelnetClient();
                String answer = telnet.request();
                JLabel lbl = new JLabel(answer);
                getContentPane().add(lbl);



    } catch (Exception e) {
        System.err.println("createGUI didn't complete successfully");
    }
}
}
于 2013-01-25T16:14:40.677 に答える