2016-03-25 23 views
-1

ネットワークチャットシステムに、別の接続を開いていると同時に別のサーバーに接続する方法を追加しました。私がそれを設定する方法は、それがシステムの独立したインスタンスではないことを除いて、機能します。メインウィンドウを閉じると、他のウィンドウもすべて閉じます。ログインウィンドウの全く新しいインスタンスを開く方法はありますか?コメントで@HovercraftFullOfEelsが提供する良い練習と同じアプリJavaの別のバージョンを開く方法は?

public void actionPerformed(ActionEvent e) { 
     String[] input = null; 
     Login.main(input); 
    } 
+1

あなたは、 "ウィンドウ" を言うとき、あなたはスイングで作業している意味ですか?そして1つのSwingウィンドウを閉じて別のSwingウィンドウを閉じたままにしたい場合は、 – maksimov

+0

はい、私はJFramesを使用しています。アプリケーションのまったく新しいインスタンスを作成したいので、最初に開いたものを閉じると、他のインスタンスが開いたままになります。 – YourNameHere

+0

あなたの問題とあなたの質問を、すべてがまだ非常に濁っているので、明確にしてください。また、一般的にJFramesを交換したくありません。代わりにCardLayoutを使用してJFrame内のJPanelビューをスワップします。 –

答えて

-1

ソリューション:

は、ここで私が使用していたコードです。唯一のあなたのユースケースをカバーする

  • あなたが作成したWindows(JFrameの)のリストを維持することができます。
  • 処分する代わりに閉じて終了しないでください。
  • 終了時にWindowsをリストから削除します。
  • リストにウィンドウがない場合は、システムを終了します。

ここではいくつかのsudoのコードです:

final List<JFrame> jframeList = new ArrayList<JFrame>(); 

    JFrame jFrame = new JFrame(); 
    jframeList.add(jFrame); 

    jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

    jFrame.addWindowListener(new WindowAdapter() { 
     @Override 
     public void windowClosing(WindowEvent e) { 
      JFrame jframe = (JFrame) e.getSource(); 
      jframeList.remove(jframe); 
      if (jframeList.isEmpty()) { 
       System.exit(0); 
      } 
     } 
    });