インターフェース設計では、コンテナを多くのコンポーネントに配置する必要があります。 Java.awtは、さまざまなレイアウトクラスを定義し、各レイアウトクラスはレイアウト戦略に対応しています。次のレイアウトカテゴリ:
•flowlayout、順番に配置されたコンポーネント。
•BorderLayout、コンポーネントを境界に置きます。
•CardLayout、ポーカーカードなどのスタックコンポーネントは、毎回コンポーネントの1つのみを表示できます。
•Gridlayoutは、表示領域を線と列に応じて等しいグリッドに分割し、コンポーネントがこれらのグリッドに順番に配置されます。
•GridBaglayoutは、ディスプレイエリアを多くの小さなユニットに分割し、各コンポーネントは1つ以上の小さなユニットを占有できます。
その中で、GridBaglayoutは細かいポジションコントロールを実行できます。このチュートリアルは、このレイアウト戦略について説明し、特別な記事で詳しく説明します。
各コンテナにはレイアウトマネージャーがあり、コンテナにコンポーネントを配置する方法を決定します。レイアウトマネージャーは、レイアウトマネージャーインターフェイスを実装するクラスです。
1.フローレイアウトレイアウト
Flowlayoutレイアウトは、追加の順序に従ってコンポーネントを左から右に配置し、次にラインに移動して1行の後に左から右に続き、各ラインのコンポーネントが中央に配置されます。これは、多くのコンポーネントがある場合に、最も簡単なレイアウト戦略です。
FlowLayoutは、小さなアプリケーションとパネルのデフォルトのレイアウトです。
1.flowlayout()、デフォルトのフローレイアウトレイアウトを生成します。デフォルトでは、コンポーネントは5ピクセルの中央にあります。
2。flowlayout(int aligment)、各コンポーネントのアライメントメソッドを設定します。 Alignmentは、FlowLayout.Left、FlowLayout.Center、FlowLayout.richtで利用できます。
3.Flowlayout(int aligment、int horz、int vert)、アライメントメソッドを設定し、コンポーネントの水平間隔Horzと垂直間隔を設定し、スーパークラスコンテナのメソッドを使用してコンテナのレイアウトを設定します。たとえば、コードSetLayout(new FlowLayout())は、コンテナのFlowLayoutレイアウトを設定します。コンテナにコンポーネントを追加する方法は、追加(コンポーネント名)です。
2。BorderLayoutレイアウト(JWindow、JFrame、JDialogのデフォルトレイアウト)
Borderlayoutレイアウト戦略は、コンテナ内のスペースを東の「東」、西西」、南「南」、北「北」、および「中央」の5つの地域に単純に分割することです。コンポーネントを結合するときは、コンポーネントが配置されている領域を示す必要があります。コンポーネントを位置に置きます。特定の場所に複数のコンポーネントを追加する場合は、まず場所のコンポーネントを追加して別のコンテナを配置し、次にこの位置にコンテナを追加する必要があります。
Borderlayoutレイアウトの構造方法は次のとおりです。
(1)borderlayout()、デフォルトのborderlayoutレイアウトを生成します。デフォルトでは、ギャップはありません。
(2)borderlayout(int horz、int vert)は、コンポーネント間の水平間隔と垂直間隔を設定します。
Borderlayoutレイアウト戦略の設定方法は、setLayout(new borderlayout())です。コンテナにコンポーネントを追加する方法(コンポーネント名、場所)が追加されます。
borderlayoutレイアウトは、Jwindow、JFrame、Jdialogのデフォルトレイアウトです。
[例11-5]アプリケーションには5つのラベルがあり、それぞれ東、西、南、北、中央の5つの地域に配置されています。
import javax.swing。*;ウィンドウ "); //ウィンドウコンテナオブジェクトを作成するMW.Setsize(250,200); container con = mw.getContentPane(); con.setLayout(new borderlayout()); label1 = new Jlabel(" east tag "); / / / / / / / / / / Qi Qi label2 = new Jlabel( "South Tag"、jlabel.center);新しいJlabel(jlabel.center); .add(label4、 "north");
3.Gridlayoutレイアウト
グリッドレイアウトレイアウトは、コンテナをグリッドのようなグリッド形状と列に分割することです。 Gridlayoutレイアウトの特徴は、コンポーネントの位置決めがより正確であることです。 Gridlayoutレイアウトの各グリッドには形状とサイズが同じであるため、コンテナに入れるのに必要なコンポーネントも同じサイズを維持する必要があります。
Gridlayoutレイアウトの建設的な方法は次のとおりです。
(1)gridlayout()、単一の-column gridlayoutレイアウトを生成します。デフォルトでは、ギャップはありません。
(2)gridlayout(int row、int color)、行と列列でグリッドレイアウトレイアウトを設定します。
(3)gridlayout(int row、int color、int horz、int vert)、レイアウトの行と列の数、コンポーネントの水平および垂直間隔を設定します。
Gridlayoutのレイアウトは、動作のベンチマークに基づいています。反対に、コンポーネントが自動的に削減されます。優先度(コンポーネントに応じて自動的に増加します)。グリッドレイアウトレイアウトの各グリッドは、グリッドを空白にしたい場合は、ブランクラベル(new Label())を使用できます。
[例11-6]最初にいくつかのボタンといくつかのラベルをJPanelに置き、最後にJScrollpaneを小さなプログラムウィンドウに置きます。パネルの実際の要件よりも、視覚範囲内のエリアにはありません。
Import java.applet。*;新しいディメンション(h) ++){p.add(new Jlabel()); ); P.Add( "" label "+(2*i+j));} p.add(new jlabel());} p.setbackground(color.blue);p。setpreferredsize(new Dimension (W+60、H+60); ();}} class scrollpane {public scrollpane(component p){super(p); owmywindow; {mywindow = new mywindow(400、350);}}
Gridlayoutレイアウトには、すべてのコンポーネントのサイズが一貫している必要があります。これは、インターフェイスの外観を使用するほど美しくない場合があります。治療法は、コンテナにいくつかのコンポーネントを組み合わせて、このコンテナをコンポーネントとして使用してから、グリッドレイアウトレイアウトに置くことです。これは、前述の容器の巣です。たとえば、コンテナAはグリッドレイアウトレイアウトを使用して、コンテナBとCをいくつかのコンポーネントに分割し、BとCはそれぞれコンテナAにコンポーネントとして追加されます。コンテナBとCは、グリッドレイアウトレイアウトに設定したり、いくつかのグリッドに分割したり、他のレイアウトに設定したりすることもできます。このようにして、外観から、各コンポーネントのサイズは異なります。
4.Cardlayoutレイアウト
CardLayoutレイアウトを使用するコンテナは複数のコンポーネントに対応できますが、複数のコンポーネントには同じ表示スペースがあり、特定の瞬間に1つのコンポーネントのみを表示できます。ポーカーカードのスタックが一度に上部1枚しか表示できないように、この表示されるコンポーネントはコンテナのすべてのスペースを占有します。 CardLayoutレイアウトの設計手順は次のとおりです。
最初にCardLayoutレイアウトオブジェクトを作成します。次に、setLayout()メソッドを使用して、コンテナのレイアウトを設定します。ほとんどの場合、コンテナを呼び出す追加()メソッドがコンテナにコンポーネントを追加します。 CardLayoutレイアウト戦略のコンポーネントを追加する方法は次のとおりです。
追加(コンポーネントコード、コンポーネント);
コンポーネントコードは文字列であり、個別に与えられ、コンポーネント名とは何の関係もありません。
たとえば、次のコードは、jPanelコンテナのCardLayoutレイアウトを設定します。
cardlayout mycard = new cardlayout();
CardLayoutクラスが提供するメソッドにコンポーネントを表示するには、次の2つの方法があります。
(1)show(コンテナ名、コンポーネントコード)の形式のコード、およびコンテナ内のコンポーネントディスプレイを指定します。たとえば、次のコードは、このコンポーネントを表示するコンテナPのコンポーネントを指定します。
mycard.show(p、k);
(2)コンポーネントは、コンポーネントに応じてコンテナを追加する順に表示されます。
最初(コンテナ):たとえば、コードmycard.first(p);
last(container):たとえば、mycard.last(p);
次(コンテナ):たとえば、mycard.next(p);
前(コンテナ):mycard.previous(p);
[例11-7]小規模なアプリケーションは、CardLayoutレイアウトを使用します。ウィンドウには4つのボタンがあり、Pの最初のコンポーネント、最後のコンポーネント、現在のコンポーネントの最初のコンポーネント、および現在のコンポーネントの最後のコンポーネントを表示します。
Import java.awt (); label1 = new Jlabel( "+x+" add); MyCard MyPanel [] jpanel Pan、actionlistenerリスナー) void init(){new borderlayout(); MyCard); Pのレイアウトはカードに設定されています。 ; "+i、mypanel [i]); (P2、addbutton(後者の1つ」、add(p2、 "); IftactionCommand( "First") (e.getActionCommand()。equals( "前一个"))mycard.previous(p);
5.ヌルレイアウトおよびセットバウンドメソッド
エアレイアウトは、コンテナのレイアウトをNULLレイアウトに設定することです。エアレイアウトは、SetBounds()メソッドを使用して、コンポーネント自体のサイズとコンテナ内の位置を設定します。
setbounds(int x、int y、int width、int height)
コンポーネントが占める領域は長方形、パラメーターX、Yはコンテナのコンポーネントの左上隅の位置座標であり、高さはコンポーネントの幅と高さです。エアレイアウトの第三国定住コンポーネントには2つのステップがあります。最初に、add()メソッドを使用して、ボディコンテナにコンポーネントを追加します。次に、setbounds()メソッドを呼び出して、コンテナ内のコンポーネントの位置とコンポーネント自体のサイズを設定します。コンポーネントに関連するその他の方法:
1.GetSize()。
2.GetSize()
3.SetVGAP(vgap)
4.sethgap(int hgap);