2017-02-08 3 views
-2

小さなデスクトップアプリケーションを開発しました。プログラムを実行した後、私は自分のGUIデザインを含むウィンドウを得ることができます。しかし、コンテンツ内のウィンドウをドラッグするとマージされますが、ここでの要件はコンテンツを失うべきではありませんが、同じウィンドウに表示されるはずです。私はあなたがフレームのサイズの変更をリッスンするComponentListenerを追加することができると思い、事前Javaコンテンツを失うことなくプログラムを実行した後のウィンドウの幅を小さくする

+0

Java SwingまたはAWTまたはJavaFXで作業していますか?あなたの写真が私の答えに追加されているのを見ましたが、私の答えを編集せず、あなたの質問を編集し、さらに詳細を加えてください。 (そして私はあなたが2枚の写真を追加したと思いますが同じですか?) – FaithReaper

+0

@FaithReaper私はJava Swingコンポーネントを使用していますが、2つの画像は同じですが、最初の画像は実行後のフル画像で、ウィンドウ幅を縮小した後の –

+0

@FaithReaperトラブルで申し訳ありませんが、添付した画像を確認していただけますか? –

答えて

0

感謝。リスナーでは、componentResizedなどを実装して、サイズが変更された場合の動作を判断する必要があります。

あなたはこのように実装することができます:

addComponentListener(new ComponentListener() { 

     @Override 
     public void componentShown(ComponentEvent e) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void componentResized(ComponentEvent e) { 
      if (e.getSource() instanceof JFrame) { 
       JFrame frame = (JFrame) (e.getSource()); 
       int width = frame.getSize().width; 
       int height = frame.getSize().height; 
       //your logic here 
      } 
     } 

     @Override 
     public void componentMoved(ComponentEvent e) { 


     } 

     @Override 
     public void componentHidden(ComponentEvent e) { 
      // TODO Auto-generated method stub 

     } 
    }); 

しかし、ここで私のプロジェクトの誰か(このアプリを開発し、任意のレイアウトマネージャの知識なしで)ではnullするすべてのレイアウトを設定するので、私はにsetBounds()を使用する必要があります。すべての要素を割り当てます。 MigLayoutのような適切なレイアウトマネージャを使用して、すべての要素の幅をウィンドウのサイズの何パーセントかに設定すると、それが問題なく処理されます。

this question hereが表示されます。リンクは上記の私のコメントに掲載されたのと同じです。

EDIT:

私はレイアウトマネージャずにそれを正しく行う方法を示す回答を投稿が、それは多くの時間を要しています... hereを参照してください。

+0

あなたはAPIを「仮定」していますが、OPは彼らが使っているAPIを明確にしていません。 SwingやJavaFXなどのGUIフレームワークになる可能性があります。 – MadProgrammer

+0

これは最も一般的なケースですが、そうです。追加されたタグをやり直してみましょう。 – FaithReaper

+0

いいえ、タグを再設定しないでください。OPで問題を明確にするようにしてください。タグを使用してOPが何かを使用して終了した場合は、OP – MadProgrammer

関連する問題