2009-05-22 13 views
5

私はJFrameをメインフレームからのポップアップとして使用しています。ここでは、何らかの情報を入力してからOKを押します。しかし問題は、いったんこのサブフレームが開いたら、JOptionPanesでのやり方と同様に、OKボタンが押されるまで、プログラムは他の信号を無視したいということです。今のように、ボタンをクリックすると、サブフレームを何度か開いていくつかのフレームが表示されますが、これは意図的なことではありません(多くのバグが発生します)。JavaのJFrame

OKボタンを押すと真であるブール値で解決することができましたが、それを修正するためのクールな方法のようには見えません。私は、JOptionPanesから来ている求められている効果を見ることができるが、それに到達することができないので、それを行う他の方法がなければならないと感じている。

乾杯。

+0

Mats_SX from Sweden?万が一Paradoxフォーラムに参加していないのですか? –

+0

私は大変です。 OTとeu2セクションを頻繁に使用する:) –

+0

あなたはすでに私のことを知っています(私の姓ではなく私の名前を使用しています)。 –

答えて

10

JDialogにはmodal = trueが必要です。 Javadocから:

modal - 示されたときに、他のトップレベルウィンドウにダイアログ・ブロックのユーザの入力かどうかを指定します。

+0

私はJFrameでこれを行う方法はありません? –

+2

簡単にはありません。しかし、実際にはJFrameを使う理由はありません。 JDialogは、JFrameができるほとんどのことを行うことができます。オペレーティングシステムによっては、完全なウィンドウとして扱われません。 JDialogはこのようなことを意味します(入力を収集するための小さなウィンドウ)。 –

+0

私はそれを覚えています。問題の詳細は、それが学校のプロジェクトだということです。私はプロジェクトマネージャーになりました。私は自分自身でコードを書いたわけではありません。ただ、それがLOLの原因となったバグに対処しなければなりません。だから私は、JFrameは使用されるものと仮定しましたが、似たようなタスクを持つ将来の遭遇のために、代わりにJDialogを使用します。 –

6

JFrameJDialogに変更してください。

そして、コンストラクタ、使用中のこの行:ダイアログボックスが閉じられるまで

setModal(true); 

アプリはその後、ブロックします。

ユーザーがStringと入力するだけの場合は、JOptionPane.showInputDialog()を調べるとよいでしょう。

+0

さて、彼らは3つの異なる文字列を入力しており、これらの文字列がどのように見えるかについていくつかの要件があります。 –

+0

このようなカスタム要件では、独自のカスタムJDialog – jjnguy

+0

を作成したいと思うでしょうが、JOptionPaneでそれを行うこともできます。 JOptionPaneの "message"引数はObjectです。文字列の場合は文字列のテキストを表示しますが、JComponentを渡して他のカスタムコンテンツを取得することもできます。しかし、私は "モーダルJDialogを使用する、それはそのためのものです"と同意します。 –