2011-06-22 4 views
1

Javaアプリケーションをアプレットに変換しようとしています。アプリケーションはmain.javaとgooey.javaJavaアプリケーションをアプレットに変換する際の問題

Main.java

package hellow_convert; 
import javax.swing.JApplet; 
public class main extends JApplet { 
public static void main(String[] args) { 
gooey gui = new gooey();  
} 
public void init() 
{ 
gooey gui = new gooey();   
} 
public void stop() {} 
} 

gooey.java

package hellow_convert; 
import javax.swing.*; 
import java.util.*; 
import java.awt.*; 
public class gooey {  
public JFrame f = new JFrame(); 
private JPanel pnlNorth = new JPanel(); 
private JButton btnNorth = new JButton("North"); 
private JMenuBar mb = new JMenuBar(); // MenuBar 
private JMenu mnuFile = new JMenu("File"); // File Entry on Menu bar 
private JMenuItem mnuItemAbout = new JMenuItem("About"); // About Entry 
public gooey(){ 
f.setJMenuBar(mb); 
mb.add(mnuFile);  
mb.add(mnuHelp); 
pnlNorth.add(btnNorth); 
f.getContentPane().setLayout(new BorderLayout()); 
f.getContentPane().add(pnlNorth, BorderLayout.NORTH); 
f.setBounds(100, 100, 200, 100); 
} 
} 

それから成り外見このような。 Applet 私はちょうどそれをアプレットとして動作させるように思えます。私がデバッグでそれを実行すると、アプレットウィンドウが開き、(アプリケーションと同様に)JFrameウィンドウがポップアップします。アプリケーションとして、それは期待どおりに動作しますが、どのようにしてアプレットウィンドウにコントロールを取得できますか? これは初めてです。どんな助けもありがとう!

+2

"作業中の単純なJavaアプリケーションをアプレットに変換しようとしています"ユーザエクスペリエンスを向上させ、メンテナンスコストを削減するために、[Java Web Start](http:// stackoverflow。 com/tags/java-web-start/info)。 –

+0

@Andrewありがとう!クライアント側のアプリのインストールは必要ですか? –

+2

必要なバージョン以上のWebstartが稼動しているJavaのインストールが必要です。 2年前、64ビットJREの中にはWebstartを提供していないものもありましたが、それがまだ適切かどうかはわかりません。 – Thomas

答えて

4

まあ、JAppletのは、Swingコンテナですしたがって、常にアプレットのコンテンツペインをクラスgooeyで使用する必要があります(デスクトップウィンドウで、アプレットでは動作しません)。

そのクラスにJFrameを作成するのではなく、JAppletまたはJFrameをgooey()コンストラクタに渡して試してみてください。

編集:あなたのコンストラクタは次のようになります。

​​

}

を次にようにそれを呼び出す:

JFrame f = new JFrame(...); 
new gooey(f); 

または

JApplet a = new JApplet(...);   
new gooey(a); 

あなたもこれを行うことができますあなたのメインそれはすでに

new gooey(this); 

アプレットインスタンスであるため、JFrameのを扱うときにクラスは、setBounds(...)にのみ呼び出す必要があります。

+0

ありがとうございます。もう少し詳しく教えてください。 –

+0

私はコンテナを試しましたc = this;そしてgooeyにcを渡した。私はc.getContentPane()を使用する前に型キャストを実行する必要がありますか? –

+0

JAppletを実行したときにうまくいきました。= this;ありがとう!! (回答を編集して同じものを反映してください) –

1

私はあなたがアプレットのチュートリアルを見て持つことから始めることをお勧め....アプレットは、(とりわけ)の代わりに、メインのinitメソッドを持っている必要があります - >http://download.oracle.com/javase/tutorial/deployment/applet/getStarted.html

+0

私はinitメソッドを持っています(コードを参照してください)。 Mainは私のクラスの名前です。アプレットは初期化されますが、コントロールは別のJFrameで開きます。 –

+1

申し訳ありませんが、あなたのコードは...読みにくいです!私はそれを逃した...本質的に問題はあなたが使用しているJFrameです...デスクトップウィンドウ - アプレット関連のクラスではありません。 – ManseUK