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); } }