Java 图形用户界面(GUI)布局管理器
生活随笔
收集整理的這篇文章主要介紹了
Java 图形用户界面(GUI)布局管理器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
組件不能單獨存在,必須放置于容器中,組件在容器中的位置和尺寸是由布局管理器來決定的
1.FlowLayout
容器會將組件按照添加順序,從左到右放置,到達邊界時,自動換行
import java.awt.*;public class Example {public static void main(String[] args) {//創(chuàng)建一個窗體final Frame f=new Frame("Flowlayout");//設(shè)置布局管理器為FlowLayout,所有組件左對齊,水平間距20,垂直間距30f.setLayout(new FlowLayout(FlowLayout.LEFT,20,30));f.setSize(520,400);//設(shè)置窗體大小f.setLocation(200, 300);for(int i=1;i<30;i++)f.add(new Button("Button"+i));f.setVisible(true);} }2.BorderLayout
將容器劃分為5個區(qū)域,分別是【東】EAST,【南】SOUTH,【西】WEST,【北】NORTH,【中】CENTER;
如果不指定添加區(qū)域,默認放到CENTER區(qū),每個區(qū)域只能放置一個組件
import java.awt.*;public class Example {public static void main(String[] args) {//創(chuàng)建一個窗體Frame f=new Frame("BorderLayout");//設(shè)置布局管理器為BorderLayoutf.setLayout(new BorderLayout());f.setSize(520,400);//設(shè)置窗體大小f.setLocation(200, 300);//顯示位置f.setVisible(true);//設(shè)置可見Button[] but=new Button[6];//創(chuàng)建5個按鈕,分別填充在borderLayout的5個區(qū)域Button but1 =new Button("EAST");Button but2 =new Button("SOUTH");Button but3 =new Button("WEST");Button but4 =new Button("NORTH");Button but5 =new Button("CENTER");f.add(but1,BorderLayout.EAST);f.add(but2,BorderLayout.SOUTH);f.add(but3,BorderLayout.WEST);f.add(but4,BorderLayout.NORTH);f.add(but5,BorderLayout.CENTER);f.add(new Button("每個區(qū)域只能放置一個組件"), BorderLayout.CENTER);} }3.GridLayout
將容器分為N行M列的網(wǎng)格,從左到右每個網(wǎng)格放一個組件,所有組件寬高相同
import java.awt.*;public class Example {public static void main(String[] args) {//創(chuàng)建一個窗體Frame f=new Frame("GridLayout");//設(shè)置布局管理器為BorderLayoutf.setLayout(new GridLayout(3,5,10,30));//設(shè)置網(wǎng)格:行為3,列為5,,水平間距10,垂直間距30f.setSize(500,300);f.setLocation(400, 300);f.setVisible(true);for(int i=0;i<15;i++) {f.add(new Button("Button"+i));}} }4.Grid BagLayout
最靈活、最復雜的布局管理器,允許組件大小自定義,允許一個組件跨越一個或多個網(wǎng)格
import java.awt.*; class Layout extends Frame{public Layout(String title) {GridBagLayout layout =new GridBagLayout();GridBagConstraints c=new GridBagConstraints();//布局約束條件this.setLayout(layout);c.fill=GridBagConstraints.BOTH;//設(shè)置組件橫向縱向可以拉伸c.weightx=1;//設(shè)置橫向權(quán)重為1c.weighty=1;//設(shè)置縱向權(quán)重為1this.addComponent("button1", layout, c);this.addComponent("button2", layout, c);this.addComponent("button3", layout, c);//添加的組件是本行最后一個組件c.gridwidth=GridBagConstraints.REMAINDER;this.addComponent("button4", layout, c);c.weightx=0;c.weighty=0;this.addComponent("button5", layout, c);c.gridwidth=1;//設(shè)置組件跨一個網(wǎng)格this.addComponent("button6", layout, c);//添加的組件是本行最后一個組件c.gridwidth=GridBagConstraints.REMAINDER;this.addComponent("button7", layout, c);c.gridheight=2;c.gridwidth=1;c.weightx=2;c.weighty=2;this.addComponent("button8", layout, c);c.gridwidth=GridBagConstraints.REMAINDER;c.gridwidth=1;//設(shè)置組件跨一個網(wǎng)格this.addComponent("button9", layout, c);this.addComponent("button10", layout, c);this.setTitle(title);this.pack();this.setVisible(true);}//增加組件的方法private void addComponent(String name,GridBagLayout layout,GridBagConstraints c) {Button bt=new Button(name);layout.setConstraints(bt, c);//設(shè)置約束條件c和按鈕關(guān)聯(lián)this.add(bt);//增加按鈕} } public class Example {public static void main(String[] args) {new Layout("GridBagLayout");} }5.Card Layout
在操作程序中,經(jīng)常會遇到通過選項卡來切換程序中的界面,這些界面就像一張張卡片;可以使多個界面共享一個顯示空間,某一時刻只有一個界面可見
6.不使用布局管理器
import java.awt.*;public class Example {public static void main(String[] args) {Frame f=new Frame("Frame without Layout");f.setLayout(null);//取消frame的布局管理器f.setSize(300,150);f.setVisible(true);Button button1=new Button("press");Button button2=new Button("pop");button1.setBounds(40,60,100,30);//左上角的X和Y坐標、組件的長和寬button2.setBounds(150,90,110,30);f.add(button1);f.add(button2);} }?
總結(jié)
以上是生活随笔為你收集整理的Java 图形用户界面(GUI)布局管理器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 图形用户界面(GUI)java
- 下一篇: HDU5178 pairs【二分法】【尺