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());
    }
}
相关文章
相关标签/搜索