java基础学习总结——GUI编程(一)
来源:互联网 发布:淘宝上卖的ios存档 编辑:程序博客网 时间:2024/05/16 14:35
所有的可以显示出来的图形元素都称为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 }
运行结果:
四、布局管理器总结
- java基础学习总结——GUI编程(一)
- java基础学习总结——GUI编程(一)
- java基础学习总结——GUI编程(一)
- java基础学习总结——GUI编程(一)
- java基础学习总结——GUI编程(一)
- java基础学习总结——GUI编程(一)
- Java基础学习总结(23)——GUI编程
- java基础学习总结——GUI编程(二)
- java基础学习总结——GUI编程(二)
- java基础学习总结——GUI编程(二)
- java基础学习总结——GUI编程(二)
- java基础学习总结—— GUI编程
- java基础学习总结——GUI编程(二)
- java基础学习总结——GUI编程(二)
- java基础学习总结——GUI编程(二)
- 黑马程序员——java编程GUI基础总结
- 黑马程序员-Java基础总结12——GUI编程
- java基础学习GUI编程
- java基础学习总结——数组
- Spring注解配置定时任务<task:annotation-driven/>
- map的value状态改变
- win7 IIS7.5配置伪静态2中方法
- cocoapods
- java基础学习总结——GUI编程(一)
- 运用Ajax的xmlHttpRequest对象异步与后台交互并提示交互结果
- JDK安装源码src和doc
- 10、android studio :Timeout waiting to lock daemon addresses registry
- 新浪OAuth授权
- c3p0基本使用方法和配置文件
- leetcodeOJ 61. Rotate List
- 回调函数callback…………
- VS+Qt读写Excel