java基础学习总结——GUI编程(一) 还未仔细阅读

一、AWT介绍

  

  所有的可以显示出来的图形元素都称为Component,Component代表了所有的可见的图形元素,Component里面有一种比较特殊的图形元素叫Container,Container(容器)在图形界面里面是一种可以容纳其它Component元素的一种容器,Container本身也是一种Component的,Container里面也可以容纳别的Container。

  Container里面又分为Window和Pannel,Window是可以独立显示出来的,平时我们看到的各种各样的应用程序的窗口都可以称为Window,Window作为一个应用程序窗口独立显示出来,Pannel也可以容纳其它的图形元素,但一般看不见Pannel,Pannel不能作为应用程序的独立窗口显示出来,Pannel要想显示出来就必须得把自己装入到Window里面才能显示出来。

  Pannel应用比较典型的就是Applet(JAVA的页面小应用程序),现在基本上已经不用了,AJAX和JAVASCRIPT完全取代了它的应用。

  Window本身又可以分为Frame和Dialog,Frame就是我们平时看到的一般的窗口,而Dialog则是那些需要用户进行了某些操作(如点击某个下拉菜单的项)才出现的对话框,这种对话框就是Dialog。

二、组件和容器(Component和Container)

  

2.1.Frame

  

Frame范例:

 1 package cn.javastudy.summary;
 2
 3 /**学习JAVA的GUI编程编写的第一个图形界面窗口*/
 4 import java.awt.*;
 5
 6 public class TestFrame {
 7     public static void main(String args[]) {
 8         Frame f = new Frame("我的第一个JAVA图形界面窗口");
 9         /*
10          * 这里只是在内存里面创建了一个窗口对象 还不能真正显示出来然我们看到
11          */
12         f.setBackground(Color.blue);// 设置窗体的背景颜色
13         // blue是Color类里面的一个静态常量,可以使用“类名.静态常量名”来访问
14         f.setVisible(true);// 设置窗体是否可见
15         /*
16          * 要想看到在内存里面创建出来的窗口对象, 必须调用setVisble()方法,并且把参数true传入才能看得见窗体 如果传入的参数是false,那么窗体也是看不见的
17          */
18         f.setSize(400, 400);// 设置窗体的初始大小
19         f.setLocation(200, 200);// 设置窗体出现时的位置,如果不设置则默认在左上角(0,0)位置显示
20         f.setResizable(false);
21         /*
22          * 设置窗体能否被改变大小,设置为false后表示不能改变窗体的显示大小 这里将窗体显示的大小设置为200X200,那么窗体的显示只能是这个大小了,不能再使用鼠标拖大或者缩小
23          */
24     }
25 }

运行结果如下:

  

 1 package cn.javastudy.summary;
 2
 3 import java.awt.*;
 4 public class TestMultiFrame{
 5     public static void main(String args[]){
 6         MyFrame f1 = new MyFrame(100,100,200,200,Color.BLUE);
 7         MyFrame f2 = new MyFrame(300,100,200,200,Color.YELLOW);
 8         MyFrame f3 = new MyFrame(100,300,200,200,Color.GREEN);
 9         MyFrame f4 = new MyFrame(300,300,200,200,Color.MAGENTA);
10     }
11 }
12 /*自定义一个类MyFrame,并且从Frame类继承
13 这样MyFrame类就拥有了Frame类的一切属性和方法
14 并且MyFrame类还可以自定义属性和方法
15 因此使用从Frame类继承而来的自定义类来创建图形窗口比直接使用Frame类来创建图形窗口要灵活
16 所以一般使用从Frame类继承而来的自定义类创建图形窗口界面比较好,
17 不推荐直接使用Frame类来创建图形窗口界面
18 */
19 class MyFrame extends Frame{
20     static int id = 0;
21     //定义一个静态成员变量id,用来记录创建出来的窗口的数目
22     MyFrame(int x,int y,int w,int h,Color color){
23         //自定义构成方法,在构造方法体内使用super调用父类Frame的构造方法
24         super("MyFrame"+(++id));
25         setBackground(color);
26         /*使用从父类Frame继承而来的方法设置窗体的相关属性*/
27         setLayout(null);
28         setBounds(x,y,w,h);
29         setVisible(true);
30     }
31 }

运行结果:

  

2.2.Panel

  

Panel范例:

 1 package cn.javastudy.summary;
 2
 3 import java.awt.*;
 4 public class TestPanel{
 5     public static void main(String args[]){
 6         Frame f = new Frame("JAVA Fram With Panel");
 7         Panel p = new Panel(null);
 8         f.setLayout(null);
 9         f.setBounds(300,300,500,500);//这里设置的坐标(300,300)是相对于整个屏幕的
10         f.setBackground(new Color(0,0,102));//设置背景颜色时使用三基色(红,绿,蓝)的比例来调配背景色
11         p.setBounds(50,50,400,400);//这里设置的坐标(50,50)是相对于Frame窗体的
12         p.setBackground(new Color(204,204,255));
13         f.add(p);//把Panel容器装入到Frame容器中,使其能在Frame窗口中显示出来
14         f.setVisible(true);
15     }
16 }

运行结果如下:

  

三、布局管理器

  

3.1.第一种布局管理器——FlowLayout

  

  

测试代码:

 1 package cn.javastudy.summary;
 2
 3 import java.awt.*;
 4
 5 public class TestFlowLayout {
 6     public static void main(String args[]) {
 7         Frame f = new Frame("FlowLayout");
 8         /*
 9          * 使用Button类创建按钮 按钮类的其中一个构造方法:Button(String label) label为按钮显示的文本
10          */
11         Button btn1 = new Button("button1");
12         Button btn2 = new Button("button2");
13         Button btn3 = new Button("button3");
14         /* setLayout方法的定义:public void setLayout(LayoutManager mgr) */
15         f.setLayout(new FlowLayout());// 使用流水(Flow)线般的布局
16         /* 使用了布局管理器FlowLayout,这里的布局采用默认的水平居中模式 */
17         // f.setLayout(new FlowLayout(FlowLayout.LEFT));
18         /* 这里在布局的时候使用了FlowLayout.LEFT常量,这样就将按钮设置为左对齐 */
19         // f.setLayout(new FlowLayout(FlowLayout.RIGHT));
20         /* 这里在布局的时候使用了FlowLayout.RIGHT常量,这样就将按钮设置为右对齐 */
21         f.add(btn1);// 把创建出来的按钮放置到Frame窗体中
22         f.add(btn2); // 这里并没有设置按钮的大小与位置
23         f.add(btn3); // 设置按钮的大小与位置都是由布局管理器来做的
24         f.setVisible(true);
25         f.setSize(200, 200);
26     }
27 }

运行结果如下:

3.2.第二种布局管理器——BorderLayout

  

  

测试代码:

 1 package cn.javastudy.summary;
 2
 3 import java.awt.*;
 4
 5 public class TestBorderLayout {
 6     public static void main(String args[]) {
 7         Frame f = new Frame("BorderLayout");
 8         Button btnEast = new Button("East");
 9         Button btnWest = new Button("West");
10         Button btnSouth = new Button("South");
11         Button btnNorth = new Button("North");
12         Button btnCenter = new Button("Center");
13         /*
14          * 把按钮放置到Frame窗体时按照东西南北中五个方向排列好 推荐使用这种方式去排列窗体元素,
15          * 这样容易检查出错误 因为这样写如果写错了编译器会提示出错
16          */
17         f.add(btnEast, BorderLayout.EAST);
18         f.add(btnWest, BorderLayout.WEST);
19         f.add(btnSouth, BorderLayout.SOUTH);
20         f.add(btnNorth, BorderLayout.NORTH);
21         f.add(btnCenter, BorderLayout.CENTER);
22         /*
23          * 也可以使用这样的方式排列按钮 在把按钮放置到Frame窗体时使用方向定位的字符串指定按钮的放置位置
24          * 这种使用方向定位的字符串指定按钮的放置方式不推荐使用 一旦写错了方向字符串就不好检查出来
25          *  因为即使是写错了仍然可以编译通过
26          */
27         /*
28          * f.add(btnEast,"East");
29          * f.add(btnWest,"West");
30          * f.add(btnSouth,"South");
31          * f.add(btnNorth,"North");
32          * f.add(btnCenter,"Center");
33          */
34         f.setSize(200, 200);
35         f.setVisible(true);
36     }
37 }

运行结果:

3.3.第三种布局管理器——GridLayout(表格布局管理器)

  

测试代码:

 1 package cn.javastudy.summary;
 2
 3 import java.awt.*;
 4
 5 public class TestGridLayout {
 6     public static void main(String args[]) {
 7         Frame f = new Frame("GridLayout");
 8         Button btn1 = new Button("btn1");
 9         Button btn2 = new Button("btn2");
10         Button btn3 = new Button("btn3");
11         Button btn4 = new Button("btn4");
12         Button btn5 = new Button("btn5");
13         Button btn6 = new Button("bnt6");
14         f.setLayout(new GridLayout(3, 2));
15         /* 把布局划分成3行2列的表格布局形式 */
16         f.add(btn1);
17         f.add(btn2);
18         f.add(btn3);
19         f.add(btn4);
20         f.add(btn5);
21         f.add(btn6);
22         f.pack();
23         f.setVisible(true);
24     }
25 }

运行结果:

3.4.布局练习

这几种布局管理器可以设置在Frame里面,也可以设置在Panel里面,而Panel本身也可以加入到Frame里面,因此通过Frame与Panel的嵌套就可以实现比较复杂的布局

实现代码:

 1 package cn.javastudy.summary;
 2
 3 import java.awt.*;
 4 public class TestTenButtons{
 5     public static void main(String args[]){
 6         /*这里主要是对显示窗体进行设置*/
 7         Frame f = new Frame("布局管理器的嵌套使用");
 8         f.setLayout(new GridLayout(2,1));//把整个窗体分成2行1列的表格布局
 9         f.setLocation(300,400);
10         f.setSize(400,300);
11         f.setVisible(true);
12         f.setBackground(new Color(204,204,255));
13         /*这里主要是对Panel进行布局的设置*/
14         Panel p1 = new Panel(new BorderLayout());
15         Panel p2 = new Panel(new GridLayout(2,1));//p2使用2行1列的表格布局
16         Panel p3 = new Panel(new BorderLayout());
17         Panel p4 = new Panel(new GridLayout(2,2));//p4使用2行2列的表格布局
18         /*这里主要是把按钮元素加入到Panel里面*/
19         p1.add(new Button("East(p1-东)"),BorderLayout.EAST);
20         p1.add(new Button("West(p1-西)"),BorderLayout.WEST);
21         p2.add(new Button("p2-Button1"));
22         p2.add(new Button("p2-Button2"));
23         /*p1里面嵌套p2,把p2里面的按钮作为p的中间部分装入到p1里面*/
24         p1.add(p2,BorderLayout.CENTER);//把p2作为元素加入到p1里面
25
26         p3.add(new Button("East(p3-东)"),BorderLayout.EAST);
27         p3.add(new Button("West(p3-西)"),BorderLayout.WEST);
28         for(int i=0;i<4;i++){
29                 p4.add(new Button("p4-Button"+i));
30             }
31         /*p3里面嵌套p4,把p4里面的按钮作为p的中间部分装入到p3里面*/
32         p3.add(p4,BorderLayout.CENTER);
33
34         f.add(p1);//把Panel装入Frame里面,以便于在Frame窗体中显示出来
35         f.add(p3);
36
37     }
38 }

运行结果:

四、布局管理器总结

  

时间: 2024-09-26 20:09:12

java基础学习总结——GUI编程(一) 还未仔细阅读的相关文章

java基础学习总结——GUI编程(一)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——GUI编程(一) 一.AWT介绍 所有的可以显示出来的图形元素都称为Component,Component代表了所有的可见的图形元素,Component里面有一种比较特殊的图形元素叫Container,Container(容器)在图形界面里面是一种可以容纳其它Component元素的一种容器,Container本身也是一种Component的,Container里面也可以容纳别的Container. Cont

java基础学习总结——GUI编程(二)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——GUI编程(二) 一.事件监听 测试代码一: 1 package cn.javastudy.summary; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 6 public class TestActionEvent { 7 public static void main(String args[]) { 8 Frame f = new Frame("

java基础学习总结——GUI编程(二) 未学习

一.事件监听 测试代码一: 1 package cn.javastudy.summary; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 6 public class TestActionEvent { 7 public static void main(String args[]) { 8 Frame f = new Frame("TestActionEvent"); 9 Button btn = new Button(&qu

java基础学习总结——网络编程

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——网络编程 一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程. 二.网络通信协议及接口 三.通信协议分层思想 四.参考模型 五.IP协议 每个人的电脑都有一个独一无二的IP地址,这样互相通信时就不会传错信息了. IP地址是用一个点来分成四段的,在计算机内部IP地址是用四个字节来表示的,一个字节代表一段,每一个字节代表的数最大只能到达255. 六.TCP协议和UD

Java基础教程:面向对象编程

Java基础教程:面向对象编程 Java语言概述 Java语言特点 1.Java为纯面向对象的语言,它能够直接反映现实生活中的对象.总之,Everything is object! 2.平台无关性.Java为解释型语言,编译器会把Java代码变成"""中间代码",然后在JVM上解释执行. 3.Java提供了很多内置的类库,这些类库简化了开发人员的程序设计工作,同时缩短了项目开发时间. 4.Java语言提供了对Web应用的支持. 5.Java语言提供了较好的安全性和健

Java基础学习总结——Java对象的序列化和反序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些s

java基础学习笔记day01

java基础学习笔记day01 1.软件开发: 软件:按照特定顺序组织的计算机数据和指令的集合 开发:软件的制作过程 软件开发:借助开发工具和计算机语言制作软件 2.java概述: java之父:詹姆斯·高斯林 JDK:java开发环境 jre:java运行环境 JVM:java虚拟机 java跨平台是因为,JVM能在不同的平台运行,JVM是跨平台的 JavaSE:标准版 JavaME:手机端,物联网 JavaEE:企业版,互联网项目 3.java语言特点: 简单性 解释性 面向对象 高性能 分

Java基础学习1-Java标识符及基本类型

暑假闲来无事,重新学习Java,希望能够加深自己对Java的理解与深入. 第一天,从Java标识符开始. Java标识符的命名规则 - 标识符必须以字母.下划线.美元符$开头. - 标识符其它部分可以是字母.下划线.美元符$和数字的任意组合. - Java标识符的大小写敏感,无长度限制(但是也不要太长,会变成裹脚布的(/ □ \)). - 不可以是Java的关键字(这点只要是有点基础的都会知道啦,Java的关键字还挺多的哦,小心踩到地雷呀). 下面是一个小栗子. /* *测试标识符的写法 */

java基础学习总结——java环境变量配置(转)

java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之后,还需要在电脑上配置"JAVA_HOME”."path”."classpath"这三个环境变量才能够把java的开发环境 搭建好.在没安装过jdk的环境下,path环境变量是系统变量,本来存在的,而JAVA_HOME和classpath是不存在的. 一.配置JAVA_HOME变量 操作步骤(win7系统):计算机→右键“属性”→高