本文實例講述了java GUI編程之布局控制器(Layout)。分享給大家供大家參考,具體如下:
布局控制器,是用來系統自動分配各個component在window內部是怎么排布的;默認為FlowLayout,即挨個排序。FlowLayout是Panel的
instance 1:FlowLayout
import java.awt.*;
public class TestLayout {
public static void main(String[] args) {
Frame f = new Frame();
Button b1 = new Button("ok");
Button b2 = new Button("open");
Button b3 = new Button("change");
f.setBackground(Color.BLUE);
f.setBounds(100, 100, 300, 300);
f.setLayout(new FlowLayout());
f.setResizable(true);
f.add(b1);
f.add(b2);
f.add(b3);
f.setVisible(true);
}
}
instance 2:BorderLayout
import java.awt.*;
public class TestBorderLayout {
public static void main(String[] args) {
Frame f = new Frame("Border Layout");
Button bn = new Button("Bn");
Button bs = new Button("Bs");
Button be = new Button("Be");
Button bw = new Button("Bw");
Button bc = new Button("Bc");
// f.add(bw,"West");
// f.add(be,"East");
// f.add(bn,"North");
// f.add(bs,"South");
// f.add(bc,"Center");
// f.setLayout(new BordorLayout());
f.add(bn,BorderLayout.NORTH);
f.add(bs,BorderLayout.SOUTH);
f.add(bw,BorderLayout.WEST);
f.add(be,BorderLayout.EAST);
f.add(bc,BorderLayout.CENTER);
f.setSize(200, 200);
f.setVisible(true);
}
}
BorderLayout把整個界面劃分為東西南北中五個區域塊;其中BorderLayout.NORTH等是int類型的數據,為一個常量。
instance 3:GridLayout
import java.awt.*;
public class TestGridLayout {
public static void main(String[] args) {
Frame f = new Frame();
Button b1 = new Button("b1");
Button b2 = new Button("b2");
Button b3 = new Button("b3");
Button b4 = new Button("b4");
Button b5 = new Button("b5");
Button b6 = new Button("b6");
f.setLayout(new GridLayout(3,2));
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.add(b6);
f.pack();
f.setSize(200, 200);
f.setVisible(true);
}
}
注:當調用Layout后,其內部的component的大小和位置由系統(布局管理器自主分配),而無法認為的設計。而pack()方法是用來顯示各個組件的。
instance 4:綜合實例
import java.awt.*;
public class TestedLayout {
public static void main(String[] args) {
Frame f = new Frame("GUI");
f.setLayout(new GridLayout(2,1));
Panel p1 = new Panel(new BorderLayout());
Panel p2 = new Panel(new BorderLayout());
Panel p11 = new Panel(new GridLayout(2,1));
Panel p22 = new Panel(new GridLayout(2,2));
Button b1 = new Button("button");
Button b2 = new Button("button");
Button b3 = new Button("button");
Button b4 = new Button("button");
Button b5 = new Button("button");
Button b6 = new Button("button");
Button b7 = new Button("button");
Button b8 = new Button("button");
Button b9 = new Button("button");
Button b10 = new Button("button");
p1.add(b1,BorderLayout.WEST);
p1.add(b2,BorderLayout.EAST);
p2.add(b3,BorderLayout.WEST);
p2.add(b4,BorderLayout.EAST);
p11.add(b5);
p11.add(b6);
p22.add(b7);
p22.add(b8);
p22.add(b9);
p22.add(b10);
p1.add(p11,BorderLayout.CENTER);
p2.add(p22,BorderLayout.CENTER);
f.add(p1);
f.add(p2);
f.setBounds(100, 100, 400, 400);
f.setVisible(true);
}
}
注:一個new等于創建了一個button對象,分配了一個內存空間。即使是完全相同的button即同樣的大小名稱等,其終究還是哪一個,當其被反復添加時,僅僅是相當于給其換了位置。其和變量不同,并不是單純的復制,而是內存和對象的指向問題。
更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。