AWT
➢AWT(Abstract Window Toolkit)包括了不少類和接口,用於Java Application
的GUI (Grapbics User Interface圖形用戶界面)編程。
➢GUI的各類元素(如: 窗口,按鈕,文本框等)由Java類來實現。
➢使用AWT所涉 及的類-般在java.awt包及其子包中。
➢Container和Component是 AWT中的兩個核心類。
html
Component & Container
Java的圖形用戶界面的最基本組成部分是Component,Component類及其子類的對象
用來描述以圖形化的方式顯示在屏幕上並能與用戶進行交互的GUI元素,例如,-一個按鈕,
一個標籤等。
➢通常的Component對 象不能獨立地顯示出來,必須將」放在"某-的Container對象中才可
以顯示出來。
➢Container是Component子類,Container子 類對象能夠「容納」別的Component對象。
➢Container對象可以使用方法add(..)向其中添加其餘Component對象。
➢Containter 是Component的子類,所以Containter對象也能夠被看成Component對象添
加到其餘Container對象中。
➢有 兩種經常使用的Containter:
Window:其對象表示自由停泊的頂級窗口
Panel:其對象可做爲容納其它Component對象,但不能獨立存在,必須被添加到其
它Containner中(如Window或Applet)
java
package com.shuai01; import java.awt.*; public class TestFrameDemo01 { public static void main(String[] args) { myFrame m1 = new myFrame(100,100,200,200,Color.yellow); myFrame m2 = new myFrame(300,100,200,200,Color.green); myFrame m3 = new myFrame(100,300,200,200,Color.red); myFrame m4 = new myFrame(300,300,200,200,Color.orange); } } class myFrame extends Frame { static int id = 0; myFrame(int x,int y,int w,int h,Color color) { super("myFrame"+ (++id)); setBackground(color); setLayout(null); setBounds(x,y,w,h); setVisible(true); } }
程序1編程
package com.shuai01; import java.awt.*; public class TestPanel { public static void main(String[] args) { Frame f = new Frame("java Frame with panel"); Panel p = new Panel(null); f.setLayout(null); f.setBounds(300,300,500,500); f.setBackground(new Color(100,220,100)); p.setBounds(50,50,400,400); p.setBackground(new Color(204,204,255)); f.add(p); f.setVisible(true); } }
程序2ide
package com.shuai01; import java.awt.*; public class TestmultiPanel { public static void main(String[] args) { MyFrame2 m = new MyFrame2("java frame",300,300,400,300); } } class MyFrame2 extends Frame { private Panel p1, p2, p3, p4; MyFrame2(String s, int x, int y, int w, int h) { super(s); setLayout(null); p1 = new Panel(null); p2 = new Panel(null); p3 = new Panel(null); p4 = new Panel(null); p1.setBounds(0,0,w/2,h/2); p2.setBounds(0,h/2,w/2,h/2); p3.setBounds(w/2,0,w/2,h/2); p4.setBounds(w/2,h/2,w/2,h/2); p1.setBackground(Color.blue); p2.setBackground(Color.green); p3.setBackground(Color.orange); p4.setBackground(Color.cyan); add(p1);add(p2);add(p3);add(p4); setBounds(x,y,w,h); setVisible(true); } }
佈局管理器類:佈局
◆Java語言中,提供了佈局管理器類的對象能夠管理
◆管 理Component在Container中的佈局,沒必要直接設置
Component位置和大小。
◆每 個Container都有一個佈局管理器對象,當容器須要對某個組件
進行定位或判斷其大小尺寸時,就會調用其對應的佈局管理器,調用
Container的setLayout方法改變其佈局管理器對象。
◎Awt提供了5種佈局管理器類:
◆FlowLayaout
◆BorderLayout
◆GridlLayou
◆CardLayout
◆GridBagLayoutthis
1mport java.aut. *: public class TestFlowLayout ( public static void main(String args[]) { Frane I。new Frane ("F lou Layout") ; Button button1 neu Button("Ok") ; Button button2 = new Button("Open") : Button button3 = new Button("Close") : f.setLayout (new FlowLayout (FlowLayout .LEFT)) ; f. add (button1) ; f. add (button2) ; f. add (button3) ; f.setSize (100, 100) ; f.setVisible(true) ;
package com.shuai01; import java.awt.*; public class TestBorderLayout { public static void main(String[] args) { Frame f; f = new Frame("Border Layout"); Button bn = new Button("BN"); Button bs = new Button("BS"); Button bw = new Button("BW"); Button be = new Button("BE"); Button bc = new Button("BC"); 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); } }
package com.shuai01; import java.awt.*; public class TestBorderLayout { public static void main(String[] args) { Frame f; f = new Frame("GridLayout"); Button bn = new Button("BN"); Button bs = new Button("BS"); Button bw = new Button("BW"); Button be = new Button("BE"); Button bc = new Button("BC"); f.setLayout(new GridLayout(3,4)); f.add(bn); f.add(bs); f.add(bw); f.add(be); f.add(bc); f.pack(); f.setVisible(true); } }
addActionListener(ActionListener l) |
添加指定的動做偵聽器以今後按鈕接收動做事件。
|
---|
package com.shuai01; import java.awt.*; import java.awt.event.*; public class TestActionEvent2 { public static void main(String args[]) { Frame f = new Frame("Teat"); Button b1 = new Button("Start"); Button b2 = new Button("Stop"); Monitor2 bh = new Monitor2(); b1.addActionListener (bh); b2.addActionListener (bh); b2.setActionCommand("game over"); f.add(b1, "North"); f.add(b2, "Center"); f.pack(); f.setVisible(true); } } class Monitor2 implements ActionListener{ public void actionPerformed(ActionEvent e){ System.out.println("a button has been pressed,"+ "the relativeinfo 18:\n "+ e.getActionCommand()) ; } }
public void setEchoChar(char c)
持有對方引用spa
計算機加法3d
代碼以下code
package com.shuai01; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class TFmath { public static void main(String[] args) { TFFrame t1 = new TFFrame(); t1.setTitle("計算器"); t1.launchFrame(); } } class TFFrame extends Frame { TextField num1, num2, num3; public void launchFrame() { num1 = new TextField(10); num2 = new TextField(10); num3 = new TextField(15); Label lblPlus = new Label("+"); Button btnEqual = new Button("="); // btnEqual.addActionListener(new myMonnitor(num1, num2, num3)); btnEqual.addActionListener(new myMonnitor(this)); setLayout(new FlowLayout()); add(num1); add(lblPlus); add(num2); add(btnEqual); add(num3); pack(); setVisible(true); } } class myMonnitor implements ActionListener { /* TextField num1, num2, num3; public myMonnitor(TextField num1, TextField num2, TextField num3) { this.num1 = num1; this.num2 = num2; this.num3 = num3; } */ //持有對方的引用 TFFrame tf = null; public myMonnitor(TFFrame tf) { this.tf = tf; } @Override public void actionPerformed(ActionEvent e) { int n1 = Integer.parseInt(tf.num1.getText()); int n2 = Integer.parseInt(tf.num2.getText()); tf.num3.setText(String.valueOf(n1+n2)); } }
內部類改進後orm
package com.shuai01; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class TFmathDemo01 { public static void main(String[] args) { new TFFrame().lanuchFrame(); } } class TFFrame extends Frame { TextField num1, num2, num3; public void lanuchFrame() { num1 = new TextField(10); num2 = new TextField(10); num3 = new TextField(15); Label lblplus = new Label("+"); Button equals = new Button("="); equals.addActionListener(new myMonitor()); setLayout(new FlowLayout()); add(num1); add(lblplus); add(num2); add(equals); add(num3); pack(); setVisible(true); } class myMonitor implements ActionListener { @Override public void actionPerformed(ActionEvent e) { int n1 = Integer.parseInt(num1.getText()); int n2 = Integer.parseInt(num2.getText()); num3.setText(" " + (n1 + n2)); } } }
package com.shuai01; import java.awt.*; public class TestPaint { public static void main(String[] args) { // 調用方法 new PaintFrame().launchFrame(); } } class PaintFrame extends Frame { //編輯窗口大小位置,可見 public void launchFrame() { setBounds(200, 200, 640, 480); setVisible(true); } //重寫打印方法 public void paint(Graphics g) { Color c = g.getColor(); //記錄畫筆顏色 g.setColor(Color.red); g.fillOval(50, 50, 30, 30);//圓形 g.setColor(Color.green); g.fillRect(80, 80, 40, 40);//矩形 g.setColor(c); //恢復畫筆顏色 } }
package com.shuai01; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Iterator; public class MyMouseAdapter { public static void main(String args[]) { new MyFrame("drawing..."); } } class MyFrame extends Frame { ArrayList points = null; // 設置Frame結構 MyFrame(String s) { super(s); points = new ArrayList(); setLayout(null); setBounds(300,300,400,300); setBackground(new Color(204,204,255)); setVisible(true); // 調用鼠標監聽器 addMouseListener(new Monitor()); } //遍歷集合,畫點 public void paint(Graphics g) { Iterator i = points.iterator(); while(i.hasNext()){ Point p = (Point)i.next(); g.setColor(Color.BLUE); g.fillOval(p.x,p.y,10,10); } } //添加點 public void addPoint(Point p){ points.add(p); } } //添加監視器 class Monitor extends MouseAdapter { public void mousePressed(MouseEvent e) { // 從e中獲得信息,點的座標,並進行重畫 MyFrame f = (MyFrame)e.getSource(); f.addPoint(new Point(e.getX(),e.getY())); f.repaint(); } }
Window事件
keyEvent
package com.shuai01; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class KeyEventDemo { public static void main(String[] args) { new MYFrame("wode"); } } class MYFrame extends Frame { MYFrame(String s) { super(s); setBounds(100,200,300,300); setBackground(Color.green); setVisible(true); addKeyListener(new myMonitor()); } } class myMonitor extends KeyAdapter { public void keyPressed(KeyEvent e) { System.out.println("鍵盤被按下"+e.getKeyCode()); } }