• ベストアンサー

ファイル保存先のダイアログが背面に表示されてしまう

FileDialogにてファイル保存先のダイアログを表示させるのですが、 表示している画面の後ろに表示されてしまいます。 どのような対応で前面に表示できますでしょうか? お手数ですが、ご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

んんー、やっぱり混ざってる。 >1.クライアントにA-Frameを表示する。 >2.ダウンロードボタンのクリックで、 >  サーバー側のB-サーブレットを実行する。 →サーバー側に動作が移りますよね >3.B-サーブレットが、C-Beanを生成する。 >4.C-BeanがFileDialogメソッドを実行する。 →サーバーから直接クライアント画面に表示させようと言うのが間違い >5.クライアントに、ダイアログが表示されるが、A-Frameの背面に必ずなってしまう。 →クライアントOSはA-Frameしか知らないが、C-BeanのFileDialogはA-Frameを知らない たぶんクライアントOSのことも知らないので、バックグラウンドにしかなり得ない。 サーブレットもローカルコンピューター内だから、C-Beanの出すFileDialogが画面に見えるのだろうけど、 別のコンピューターだったら、サーバーの端末にダイアログが出てしまうのでは??? A-Frameはブラウザやftpソフトのような役割を持つのだと思うけど、 クライント側への表示は全て(ダイアログも) 一旦A-Frameへ情報を渡して、A-Frameに表示させるべきです。

kiyoto
質問者

お礼

お礼が遅くなり申し訳ありません。 アドバイスありがとうございました。

kiyoto
質問者

補足

返答が遅くなり申し訳ありません。 サーバー側の結果を元に、appletでダイアログを表示させるようにしました。しかし、onLoadでダイアログ表示のappletを起動する関係か、QNo.1825556で質問している様な現象が発生しております。 onLoadではなく、</HTML>の後にchkResultを実行させても結果は同じなのんですが、実行前にアラートを入れるとアクティブになります。 処理方式が時間等の関係でなかなか難しいので対応方法で悩んでおります。 function chkResult() { var cn = <%= strCheckFlag %>; var oForm = document.wait_message; oForm.FLAGFileName.value = "<%= strFileName %>"; if (cn == 1) { // 処理を許可された場合 // ディレクトリ選択ダイアログ出力。 x = window.document.FileDialogApplet.showDlg("<%= strFileName %>"); if (x == "nullnull") { // ダイアログでキャンセルが押された場合。 // ShowMsg("NCI0002"); return; } else { var pos = x.lastIndexOf("\\"); if ( x.substring(pos+1,x.length) != "<%= strFileName %>" ) { // DBに登録されているファイル名とディ レクトリで選択(入力)されたファイル名が異なる場合。 ShowMsg("NCE0003"); return; } } alert( "保存先:" + x + "\n保存ファイル:<%= strFileName %>\nダウンロード開始します。" ); --> </SCRIPT> <HTML> <HEAD> <TITLE><%= proc.getPageTitle() %></TITLE> <META http-equiv="Content-type" content="text/html; charset=MS932"> <LINK rel="stylesheet" type="text/css" href="../xxxxx/css/xxxxx/_common.css"> <LINK rel="stylesheet" type="text/css" href="../xxxxx/css/xxxxx/m_hozenfont12.css"> <LINK rel="stylesheet" href="../xxxxxc/css/xxxxxcco/com_lpmsg.css" type="text/css"> </HEAD> <BODY class="additionBody12" onLoad="setTitleBtn();m_SessionTimer (270000,13);chkResult();"> <FORM name="wait_message" method="POST"> </HTML>

その他の回答 (2)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

サーブレット?? そのダイアログはどちら側で見るためのもの? 私自身はサーブレットは作ったことがないのですけど、こういうやりとりでサーブレットの話が出てくると、クライアントサイドと、サーバーサイドがごちゃ混ぜのまま、プログラム組んでるようにしかみえないんですけど? もっと具体的に、AFrame(クライアントですよね?)と、サーブレット内部のCBeanクラスとの関係を補足して頂くと、詳しい人からレスが付くかもしれません。

kiyoto
質問者

補足

再度、補足させて頂きます。 1.クライアントにA-Frameを表示する。 2.ダウンロードボタンのクリックで、   サーバー側のB-サーブレットを実行する。 3.B-サーブレットが、C-Beanを生成する。 4.C-BeanがFileDialogメソッドを実行する。 5.クライアントに、ダイアログが表示されるが、A-Frameの背面に必ずなってしまう。 → toFront()メソッドを実行しても背面のまま

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

それは、どんな状況でおきているのでしょうかね? 現在作業中(top)のFrame内コンポーネントからのボタンイベントで以下のコードを実行する場合には、作業中Frameの上に表示されますけど。 FileDialog save_dialog = new FileDialog(parentFrame, "画像保存ファイル名を指定", FileDialog.SAVE); save_dialog.show(); ダイアログ作成メソッドが作業中Frameとは別なところ(裏Frameなど)に書かれているのでしょうか? requestFocus() してみるとか?(JavaDocに非推奨とあったけど)

kiyoto
質問者

補足

補足させて頂きます。 AのFrameでボタンイベントで、Bサーブレットを起動します。 BサーブレトがCBeanを生成します。 FileDialogメソッドは、CBeanに記述しております。

関連するQ&A