プロが教えるわが家の防犯対策術!

FileDialogにてファイル保存先のダイアログを表示させるのですが、
表示している画面の後ろに表示されてしまいます。

どのような対応で前面に表示できますでしょうか?

お手数ですが、ご教示ください。

A 回答 (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に表示させるべきです。

この回答への補足

返答が遅くなり申し訳ありません。
サーバー側の結果を元に、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>

補足日時:2005/12/12 19:15
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/04/23 01:17

サーブレット??


そのダイアログはどちら側で見るためのもの?
私自身はサーブレットは作ったことがないのですけど、こういうやりとりでサーブレットの話が出てくると、クライアントサイドと、サーバーサイドがごちゃ混ぜのまま、プログラム組んでるようにしかみえないんですけど?

もっと具体的に、AFrame(クライアントですよね?)と、サーブレット内部のCBeanクラスとの関係を補足して頂くと、詳しい人からレスが付くかもしれません。

この回答への補足

再度、補足させて頂きます。

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

補足日時:2005/11/09 09:59
    • good
    • 0

それは、どんな状況でおきているのでしょうかね?



現在作業中(top)のFrame内コンポーネントからのボタンイベントで以下のコードを実行する場合には、作業中Frameの上に表示されますけど。

FileDialog save_dialog = new FileDialog(parentFrame, "画像保存ファイル名を指定", FileDialog.SAVE);
save_dialog.show();

ダイアログ作成メソッドが作業中Frameとは別なところ(裏Frameなど)に書かれているのでしょうか?

requestFocus() してみるとか?(JavaDocに非推奨とあったけど)

この回答への補足

補足させて頂きます。

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

補足日時:2005/11/02 08:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!