0

公開する必要があるこのプロジェクトがありますが、どの方法が最適かわかりません。誰か助けてください。

私はGuiアプリケーション(Jframe)を持っています。そこには、いくつかのアニメーションを含む Jpanel があります (実行可能な実装)。したがって、私のメイン メソッドでは、最初にコンストラクターを呼び出して、すべてが適切に表示されるようにしてから、Runner.start() を呼び出します。(スレッド)

つまり、基本的に GUI がポップアップしてからアニメーションが発生します。具体的には、アニメーションはスライドインするプログラムのタイトルにすぎません。

今、私はこれをウェブサイトに掲載して、生徒が使用できるようにしたいと考えています。Java Web Start を使用したくありません。これをアプレットとして機能させたいのです。

では、この jframe をアプレットに入れますか? または、この全体を jframe から japplet に変換する必要がありますか? このアプレットは Runnable を実装する必要がありますか?

私を悩ませているのは、Japplet にメイン メソッドがないことです。そのため、Japplet がいつアニメーションを実行できるかをどのように指定できますか? すべてが画面にロードされる前ではなく、ロードされた後にアニメーションが発生するようにします。

init() メソッドの最後のステートメントとして配置すると思いますか?私が間違っている場合は修正してください。

ありがとう、

4

2 に答える 2

3

私はGuiアプリケーション(Jframe)を持っています。.. 生徒が使えるように、これをウェブサイトに載せたいです。

フレームをアプレットに変換することは可能ですが、Java Web Startを使用してリンクからフレームを起動することをお勧めします。

于 2012-11-08T23:51:51.910 に答える
2

あなたは両方を行うことができます:

メイングイ

import java.awt.BorderLayout;
import javax.swing.*;
public class MainGui extends JPanel {
    public MainGui() {
        this(null);
    } 
    public MainGui(MyJApplet applet) {
        this.applet = applet;
        if (!isApplet()) {
            frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        } else
            frame = null;
        setLayout(new BorderLayout());
        // setPreferredSize(new Dimension(640, 480));
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                MainGui.this.run();
            }
        });
    }
    String title() {
        return "Title";
    }
    public void addContent() {
        add(new JLabel("add content! top"));
    }
    void run() {
        if (isApplet()) addContent();
        else {
            frame.setTitle(title());
            frame.getContentPane().add(this, BorderLayout.CENTER);
            addContent();
            frame.pack();
            System.out.println(getSize());
            frame.setVisible(true);
        }
    }
    boolean isApplet() {
        return applet != null;
    }
    public static void main(String[] args) {
        new MainGui(null);
    }
    protected final JFrame frame;
    protected final MyJApplet applet;
    private static final long serialVersionUID = 1;
}

MyJApplet

import java.awt.BorderLayout;
import javax.swing.JApplet;
public class MyJApplet extends JApplet {
    public void start() {

    }
    public void init() {
        getContentPane().setLayout(new BorderLayout());
        addContent();
    }
    public void addContent() {
        getContentPane().add(new MainGui(this), BorderLayout.CENTER);
    }
    public static void main(String[] args) {
        new MainGui(null);
    }
    private static final long serialVersionUID = 1;
}
于 2012-11-09T00:14:37.307 に答える