GUI初步和frame&panel

java的话这个GUI其实不是什么重点,但我们也要学习,重点是学习这种图形编程的思路。

java里面对于图形的一些类都封装在了AWT和它的一些子包里。AWT(抽象窗口开发包)            当然AWT是比较旧的开发包,新的叫swing,

所有可以显示出来的元素都叫component,然后下面那些什么Button,lable都是它的子类。,这里有个比较特殊的子类,container,在图形里面,container是用来容纳其他component的元素。然后这个container又分两种,一种是windows,它是可以独立显示的,哎就是我们平时的应用窗口,panel它也是容器,但它不可以独立显示。

windows又分两种,一种是frame,就是我们平时的应用窗口,一种是dialog,对话框,就是那种框你不关闭掉它其他程序内容你无法操作。 

下面看frame

一些很容易理解的方法:

*********基本窗口显示*********:
import
java.awt.*; public class TestFrame { public static void main(String[] args) { Frame f = new Frame("My first windows!!");//传进来的这个参数就是设置在titlebar的文字。 f.setSize(1000,1000);//大小 f.setBackground(Color.blue);//设置背景颜色 f.setLocation(485,10);//设它在屏幕上的位置(类比像素那什么1080*888) //f.setResizable(false);//设置窗口可不可以调节大小 f.setVisible(true);//Frame f = new Frame()这句话只是说建立了这个窗口对象,想要看得到还有用这个方法。 } }

 显示多个不同的窗口

import java.awt.*;

public class TestMultiFrame {
    public static void main(String[] args) {
        MyFrame myFrame1 = new MyFrame(100,100,200,200,Color.BLUE);
        MyFrame myFrame2 = new MyFrame(300,100,200,200,Color.YELLOW);
        MyFrame myFrame3 = new MyFrame(100,300,200,200,Color.GREEN);
        MyFrame myFrame4 = new MyFrame(300,300,200,200,Color.WHITE);
    }
}

class MyFrame extends Frame {
    static int id = 0;
    MyFrame(int x , int y , int w , int h , Color color) {
        super("MyName"+id);//调用父类的构造方法,即取名字那个
        setBackground(color);
        setLayout(null);//把自己的布局管理器设为空,以后会讲,现在先照抄
        setBounds(x,y,w,h);
        setVisible(true);
    }
}

现在到panel:

import java.awt.*;

public class TestPanel1 {
    public static void main(String[] args) {
        Frame f = new Frame("Java with Panel");
        Panel p = new Panel(null);
        f.setLayout(null);
        f.setBounds(300,300,500,500);
        f.setBackground(new Color(0,0,100));
        p.setBounds(50,50,400,400);//这里的50,50的位置不是根据屏幕坐标来的,而是根据它所在的frame来的
        p.setBackground(new Color(204,204,255));
        f.add(p);
        f.setVisible(true);
    }
}
import java.awt.*;

public class TestMultiPanel {
    public static void main(String[] args) {
        MyFrame2 f2 = new MyFrame2("MyFrame with panel",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);//代表panel不带自己的布局管理器
        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.YELLOW);
        p4.setBackground(Color.WHITE);
        add(p1);//调用父类的方法
        add(p2);
        add(p3);
        add(p4);
        setBounds(x,y,w,h);
        setVisible(true);
    }
}

 

posted @ 2017-05-21 20:54  汪神  阅读(1343)  评论(0编辑  收藏  举报