1

アプリケーションをスタンドアロン (JFrame) からアプレット (JApplet) に変換しています。FileDialog コンストラクターのパラメーターを親フレームから getContentPane に変更しましたが、うまくいきません。Jpanel を Frame にキャストできないという Class Cast 例外が発生しました。

SSCCEを見つけてください。この問題を理解するのを手伝ってください。

public class SampleApplet extends JApplet{

protected JButton countryButton = new JButton("Select");

public synchronized void init()
{
    this.setBounds(new Rectangle(350,350));
    this.add(countryButton);


    countryButton.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent arg0) {
            getCountries();
            getCountries();             
        }

    });
}

protected void getCountries() {
    FileDialog fileDialog_ImageIn = new FileDialog((Frame) getContentPane() ,"Select a GIF file", FileDialog.LOAD);
    fileDialog_ImageIn.setVisible(true);
    if (fileDialog_ImageIn.getFile() == null) 
        return;
    else
        System.out.println(fileDialog_ImageIn.getDirectory() + fileDialog_ImageIn.getFile());
}

}

4

1 に答える 1

3

アプリケーションをスタンドアロン (JFrame) からアプレット (JApplet) に変換しています。

そうしないでください!代わりに、Java Web Startを使用してリンクからフレームを起動します。これにより、ユーザー エクスペリエンスが向上し、開発と展開がより簡単になります。

ところで

  1. Swing ベースJFileChooserは、AWT ベースよりも優れています (構成可能性が高いなど) FileDialog
  2. これらのクラスのいずれかを使用するには、JWS を使用して起動されたアプレットまたはフレームのいずれかが信頼されている必要があります。アプリなら。は JWS を使用して起動されます。JNLP API は、完全にサンドボックス化されたコードでも機能するファイル システムにアクセスする方法を提供します。ポイント 1. これは小さなデモです。JNLP ファイル サービスの サンドボックス バージョンを試して、ユースケースで機能するかどうかを確認してください。コードへのリンクは、起動ボタンの右側にあります。
于 2012-04-22T16:54:44.470 に答える