web-dev-qa-db-ja.com

新しいJFrameを開くときにメインJFrameを無効にする方法

例では、メインフレームにすべての顧客情報を表示するjtableがあり、ユーザーが新しい顧客を作成できるようにする新しいJFrameを開く作成ボタンがありました。ユーザーが複数の作成フレームを開けないようにしたい。 SwingコンポーネントまたはAPIはそれを行うことができますか?またはメインフレームを無効にするにはどうすればよいですか? JDialogのようなもの。

15
user236501

新しい顧客ダイアログをモーダルJDialogにして、表示されている間はアプリ内の他のダイアログ/フレームからの入力を許可しないことをお勧めします。詳細は modality tutorial をご覧ください。

11
akf

私はあなたが新しいものを開こうとするときメインjframeのためにこのコードを使うべきだと思います:

this.setEnabled(false);

19
Hatem

遅い回答で申し訳ありませんが、シングルトンデザインパターンを検討しましたか?クラスが必要なときはいつでも、クラスの同じインスタンスを返します。したがって、ユーザーがフレームに詳細を入力したい場合、開いているフレームは1つだけです(同じインスタンス)。

それはこのようなものになります:

private static MySingleFrame instance = null; //global var

private MySingleFrame() { } //private constructor 
private static MySingleFrame getInstance()
{

if(instance == null)
{
instance = new MySingleFrame();
}

//returns the same instance everytime MySingleFrame.getInstance() is called
return instance; 


}
2
J---

最初のフレームでfirstFrame.setVisible(false)を使用するだけです。これにより非表示になります。

より一般的なアプローチが必要な場合は、現在表示されているフレームへの参照をどこかに設定し、新しいフレームの表示が要求されたときに変更することができます

JFrame currentFrame;

void showRequest(JFrame frame)
{
  currentFrame.setVisible(false);
  currentFrame = frame;
  currentFrame.setVisible(true);
}
1
Jack

以下を使用できます。

 private void btn_NewFormActionPerformed(Java.awt.event.ActionEvent evt) { 

             this.hide();
             new Frm_NewFormUI().setVisible(true);

 }
1
Wasif Faisal