GUI常用方法和樣本,GUI常用方法樣本
Frame :
Frame : 建立一個框
1 Frame f = new Frame("這是框的標題");//建立一個框 標題是這是框的標題
//預設調用paint(Graphics g)方法 需要覆寫
2 或者寫個類 繼承這個Frame類 也行 如 ;
public class GUI extends Frame{
public static void main(String[] args){
GUI a = new GUI();//也是建立一個框
//因為執行個體化的時候調用GUI的無參構造而無參構造裡面預設第一行有個super(),調用父類的無參構造,就會建立一個Frame框
}
}
setLocation :
setLocation() : //設定框的位置 以螢幕左上方(也就是螢幕原點)為標準
f.setLocation(100,100);//設定框的位置 以螢幕左上方為標準 (x,y)
setSize :
setSize() : //設定框的大小
f.setSize(200,200);//寬和高 (w,h)
setBackground :
setBackground() : //設定框的背景顏色
1 f.setBackground(Color.blue);//設定框的背景顏色為藍色
2 f.setBackground(new Color(0,0,102));//RGB:Red,Green,Blue->三原色
setResizable :
setResizable() : //設定框的大小是否可以被改變 就是是否可以拉長什麼的
f.setResizable(false);//boolean型 true/false
setVisible :
setVisible() : //設定框是否可見
f.setVisible(true);//不寫預設是false,一般都要設定 要麼你建立框幹嘛
setBounds :
setBounds() : //同時設定位置和寬高 x,y,w,h
f.setBounds(444,444,222,222);//同時設定位置和寬高
Panel :
Panel預設布局管理器是 FlowLayout 浮動布局
1 Panel p = new Panel();//建立小控制項
2 Panel p = new Panel(null);//小控制項裡面可以直接設定布局
3 Panel p = new Panel(new FlowLayout(FlowLayout.LEFT/RIGHT/CENTER));
// LEFT 左 向左浮動
// RIGHT 右 向右浮動
// CENTER 中 中間浮動
p.setBounds(50,50,100,100);//設定小組件的x,y,w,h 注意 !這個設定位置 是以框的左上方(原點),為標準 就是f
p.setBackground(new Color(200,200,255));//設定小控制項的背景顏色
f.add(p);//就把小空間添加到Frame框中了
setLayout :
setLayout() : //設定布局管理器
有三種布局管理器 :
1 FlowLayout(); //Panel預設的
2 BorderLayout(); //Frame預設的
3 GridLayout(); //都能用的
FlowLayout :
1 Panel預設的布局管理器 但是指定了也可以用BorderLayout
Panel p = new Panel(new FlowLayout(FlowLayout.LEFT/RIGHT/CENTER));
Panel p = new Panl(new BorderLayout(BorderLayout.EAST/WEST/NORTH/SOUTH/CENTER));
// LEFT 左 向左浮動
// RIGHT 右 向右浮動
// CENTER 中 中間浮動
BorderLayout :
2 Frame預設的布局管理器 但是指定了也可以用FlowLayout
1 Frame f = new Frame(BorderLayout.EAST/WEST/NORTH/SOUTH/CENTER);
2 FlowLayout fl = new FlowLayout(FlowLayout.CENTER,20,40);//設定布局方式,水平間距,垂直間距
f.setLayout(fl);
// 東西向南北縮放
// 南北向東西縮放
// 中向四周縮放
// EAST 東
// WEST 西
// NORTH 北
// SOUTH 南
// CENTER 中
GridLayout :
3 Frame和Panel都有的布局管理器
GridLayout();//網格布局管理器
f.setLayout(new GridLayout(2,2));//兩行兩列Frame的
p.set(new GridLayout(2,2));//Panel的
Button :
Button b1 = new Button("按鈕");//建立按鈕 後面括弧是按鈕的名字
把按鈕添加到Frame中,並通過常量(public static final XXX(必須大寫))指定他們的位置 有兩種 :
1 f.add(b1, BorderLayout.EAST/WEST/NORTH/SOUTH/CENTER);//東(右),西(左),北(上),南(下),中
2 f.add(b1,"East/West/North/South/Center");//東(右),西(左),北(上),南(下),中
pack :
pack() : //是否打包,把frame裡面所有的元素打包,然後根據包裹的大小,把frame撐開,f.setSize(),就失效了
f.pack();//frame框用裡面的元素撐開
ActionListener :
//建立監聽器 :
1 監聽器類必須實現ActionListener介面
2 必須實現ActionListener介面中的actionPerformed(ActionEvent e)方法
addActionListener :
//綁定監聽器 :
addActionListener();//給指定的按鈕什麼的綁定監聽器 觸發監聽器 會預設調用actionPerformed(ActionEvent e)這個方法
b.addActionListener(m);//給b按鈕綁定監聽器 m在後面例子中,
setActionCommand :
setActionCommand() : //給監聽器綁定說明
b.setActionCommand("我是第一個按鈕");
如 : //簡單的屬性設定 好多屬性沒設定
class Monitor implements ActionListener{//自己建立一個監聽器類 實現ActionListener介面
//實現ActionListener介面中的actionPerformed(ActionEvent e)方法
public void actionPerformed(ActionEvent e){
System.out.println( "我這個button按了一下" );
System.out.println( e.getActionCommand() );//擷取給監聽器添加的說明
}
}
public class GUI{
public static void main(String[] args){
Frame f = new Frame("名字");//建立框
Button b = new Button("按鈕");//建立按鈕
Monitor m = new Monitor();//執行個體化監聽器類
b.addActionListener(m);//綁定監聽器 並把對象傳進去
f.add(b);//把按鈕添加到框中
f.setVisible(true);//框可見
}
}
TextField :
TextField() : 綁定的監聽器,由斷行符號觸發
TextField t = new TextField();//建立一個文字框
TextField t = new TextField(10);//建立一個文字框並且最多隻能輸入10個
f.add(t);//把文字框添加到Frame框中
t.addActionListener(new TFActionListener());//綁定監聽器 由斷行符號觸發
t.setEchoChar('*');//密碼機制 把輸入的文字用*遮蔽
f.pack();//包裹 有內容撐起Frame框
setVisible(true);//設定可見
class TFActionListener implements ActionListener{//建立監聽器
//接收事件對象,////一個類去訪問另外一個類裡面的的方法裡面的局部變數,不可能
public void actionPerformed(ActionEvent e){
//獲得事件對象的來源物件:在一個類裡面想訪問另一個類裡面的事件來源對象,getSource()
TextField tf = (TextField)e.getSource();
//把事件來源傳遞過來,然後向下轉型
//強制類型轉換成TextField對象然後toString()輸出
System.out.println( tf.getText() );//輸出文字框的內容
//然後把內容設為空白
tf.setText("");
}
}
getSource :
getSource() : 獲得事件來源的對象
TextField tf = (TextField)e.getSource();//如上面的代碼,獲得事件來源的對象,然後向下轉型,就能訪問特有的屬性
getText :
t.getText();//獲得文字框的內容
setText :
t.setText("");//給文字框重新賦值 就一個"" 就是設定為空白
setEchoChar :
t.setEchoChar('*');//把文字框輸入的字用*號代替(只是遮蔽,輸出是什麼,還是什麼,*只是不讓直接看到)
Label :
Label l = new Label("注意:");//建立一個標註
f.add(l);//添加到Frame框中
paint :
paint(Graphics g);//建立Frame框的時候,會預設調用這個方法
//Graphics:就看做是畫筆,把Frame看做是畫布
getColor :
Color c = g.setColor();//獲得畫筆原來的顏色
setColor :
g.setColor(Color.red);//設定畫筆的顏色
g.setColor(c);//就是洗畫筆,把畫筆改為原來的顏色
fillOval :
g.fillOval(50,55,55,55);//畫一個實心橢圓(內切橢圓),位置,寬高
fillRect :
g.fillRect(44,44,44,44);//畫一個實心的矩形,位置,寬高
drawOval :
g.drawOval(22,22,22,22);//畫一個空心橢圓(內切橢圓),位置,寬高
drawRect :
g.drawRect(22,22,22,22);//畫一個空心矩形,位置,寬高
MouseAdapter :
f.addMouseListener(new 監聽類);//綁定滑鼠監聽 觸發監聽,預設調用mousePressed(MouseEvent e)這個方法
綁定滑鼠監聽 :
1 建立監聽器類 必須繼承MouseAdapter這個抽象類別
2 必須實現(其中一個方法,這裡實現的是)mousePressed(MouseEvent e)這個方法
class Monitor extends MouseAdapter{
//MouseListener-->MouseAdapter-->Monitor():如果直接實現介面,需要全部實現介面的方法,但還是MouseAdapter對介面的所有方法都進行了空的實現,我們唯寫去覆寫我們需要的方法即可
//MounseEvent,事件發生的時候,事件來源會把時間的相關對象通過監聽器發給我們的處理類
//監視器在對滑鼠按下這個事件作出反應
public void mousePressed(MouseEvent e){
//拿到事件來源對象,誰是事件來源,Component,Frame就是事件來源,本質是拿到時間來源物件的引用
MyFrame f = (MyFrame)e.getSource();//拿到事件來源的引用
f.addPoint(new Point(e.getX(), e.getY()));//Point是個類 getX(),getY()滑鼠的座標,以這個座標為原點,花一個點,然後把點添加到Frame架構中
//再去重畫這個Frame及其裡面的一切元素
//畫布重畫機制:前畫布需要狀態改變才行,大小,顯示與否,等等
//repaint-->update-->paint();強制重新整理螢幕,整個重新繪製
//這裡通過repaint調用paint()方法,遍曆集合,把每個點都進行強制重畫,點一次,就從記憶體中發送到螢幕中,資料強制重新整理一次
f.repaint();
}
}
WindowAdapter :
//建立視窗監聽器
f.addWindowListener(new 監聽類);//給Frame框綁定視窗監聽(就能關閉了)
建立視窗監聽 :
1 建立監聽類必須繼承WindowAdapter這個抽象類別
2 必須實現(其中一個方法,這裡實現的是)WindowClosing(WindowEvent)方法
f.addWindowListener(new MyWinMonitor());//綁定視窗監聽
class MyWinMonitor extends WindowAdapter{//建立視窗監聽類
public void windowClosing(WindowEvent e){//覆寫方法
setVisible(false);//
System.exit(0);//關閉jvm
}
//匿名內部類寫法 :
this.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
setVisible(true);
System.exit(0);//關閉jvm
}
}
);
KeyAdapter :
//建立鍵盤監聽 :
1 建立鍵盤監聽類 必須繼承KeyAdapter抽象類別
2 必須實現keyPressed(KeyEvent e)方法
f.addKeyListener(new 監聽類);//給frame框綁定鍵盤監聽
class KeyMonitor extends KeyAdapter{
public void keyPressed(KeyEvent e){
int keyCode = e.getKeyCode();// getKeyCode
if (keyCode == KeyEvent.VK_UP) {//常量VK_UP這裡我只設定了UP鍵吧,
System.out.println( "up--------" );
}
}
}
getKeyCode :
getKeyCode();//獲得按鍵的對應的整型值
KeyEvent :
KeyEvent是個類.裡面的常量VK_UP 都有對應的整型int值