GUI編程

 

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
◆GridBagLayout
this

 

 

 

 

 

 

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());
    }
}
相關文章
相關標籤/搜索