Java基础(十五)-----GUI基础①
来源:互联网 发布:票房数据库 编辑:程序博客网 时间:2024/04/29 08:38
java.awt包的结构
1,所有容器组件的父类都可追溯至Component或者MenuComponent。
Component是所有的容器的父类,包括Button,TextField,Container.MenuComponent
则代表了图像界面的菜单组件,MenuBar,MenuItem,Menu.
2,Container是Component的子类,主要用来盛装其他的GUI组件。
3,Container主要提供了三种容器:Window和panel,Scrollpane.Window是可以独立存在的顶级窗口,
Panel是可以盛装其他组件,但是不能独立存在的容器。
4,Window的子类有:Frame,Dialog。Frame是顶级容器,Dialog是对话框。
5,Frame,Panel,ScrollPane:
Frame可以独立存在的顶级容器,默认布局方式:方位布局(BorderLayout)
Panel不能独立存在的容器,默认布局方式:流式布局(FlowLayout)
ScrollPane带滚动条的容器,,默认布局方式:方位布局(BorderLayout)
Component是所有的容器的父类,包括Button,TextField,Container.MenuComponent
则代表了图像界面的菜单组件,MenuBar,MenuItem,Menu.
2,Container是Component的子类,主要用来盛装其他的GUI组件。
3,Container主要提供了三种容器:Window和panel,Scrollpane.Window是可以独立存在的顶级窗口,
Panel是可以盛装其他组件,但是不能独立存在的容器。
4,Window的子类有:Frame,Dialog。Frame是顶级容器,Dialog是对话框。
5,Frame,Panel,ScrollPane:
Frame可以独立存在的顶级容器,默认布局方式:方位布局(BorderLayout)
Panel不能独立存在的容器,默认布局方式:流式布局(FlowLayout)
ScrollPane带滚动条的容器,,默认布局方式:方位布局(BorderLayout)
图示1:AWT图像组件的继承关系图:
图示2:AWT容器继承关系图:
布局管理器
FlowLayout
组件从从左至右排列,遇到容器边缘,向下另起一行。代码示例:
package com.test;import java.awt.Button;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Frame;public class FlowLayoutDemo1 extends Frame {public void init(){this.setLayout(new FlowLayout(FlowLayout.LEFT));for(int i=1;i<=12;i++){this.add(new Button(""+i));}this.setSize(100,200);//this.pack();this.setVisible(true);}public static void main(String[] args) {new FlowLayoutDemo1().init();;}}
BorderLayout
设置容器为BorderLayout可以将容器分为5部分:Center,North,South,West,East。代码示例:
package com.test;import java.awt.BorderLayout;import java.awt.Button;import java.awt.Frame;public class BorderLayoutDemo extends Frame{public void init(){this.setLayout(new BorderLayout());this.add(new Button("中"),BorderLayout.CENTER);this.add(new Button("南"),BorderLayout.SOUTH);this.add(new Button("北"),BorderLayout.NORTH);this.add(new Button("西"),BorderLayout.WEST);this.add(new Button("东"),BorderLayout.EAST);this.setVisible(true);}public static void main(String[] args) {new BorderLayoutDemo().init();}}
GridLayout
通过设置网格布局管理器,可以将容器分为大小相同的网格。添加组件的时候,默认是从左至右,从上往下添加组件。代码示例:
package com.test;import java.awt.Button;import java.awt.Frame;import java.awt.GridLayout;public class GridLayoutDemo extends Frame {public void init(){this.setLayout(new GridLayout(3,2));for(int i=0;i<6;i++){this.add(new Button(""+i));}this.setVisible(true);}public static void main(String[] args) {new GridLayoutDemo().init();}}
GridBagLayout
一种可以设置组件横向,纵向占据空格和其他属性的布局管理器。
gridx,gridy:设置受该布局影响的横向和纵向的索引。默认值都为0;
gridWidth,gridHeight:设置受影响组件横向,纵向跨越的网格数。
fill:设置受影响组件如何占领空白区域。
weightx,weighty:设置受影响组件占领对于空间所增加的比重,默认为0;
gridx,gridy:设置受该布局影响的横向和纵向的索引。默认值都为0;
gridWidth,gridHeight:设置受影响组件横向,纵向跨越的网格数。
fill:设置受影响组件如何占领空白区域。
weightx,weighty:设置受影响组件占领对于空间所增加的比重,默认为0;
代码示例:
package com.test;import java.awt.Component;import java.awt.Container;import java.awt.Frame;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Label;import java.awt.TextField;public class GridBagLayoutDemo2 extends Frame {GridBagLayout gb =new GridBagLayout();GridBagConstraints gbc =new GridBagConstraints();public void init(){this.setLayout(gb);Label l1 = new Label("用户名:");Label l2 = new Label("密 码:");TextField naem = new TextField(20);TextField naem2 = new TextField(20);gbc.fill= GridBagConstraints.BOTH;gbc.gridwidth=1;gb.setConstraints(l1, gbc);this.add(l1);gbc.gridwidth=GridBagConstraints.REMAINDER;//gbc.gridwidth=3;gb.setConstraints(naem, gbc);this.add(naem);gbc.gridwidth=1;gb.setConstraints(l2, gbc);this.add(l2);gbc.gridwidth=GridBagConstraints.REMAINDER;//gbc.gridwidth=3;gb.setConstraints(naem2, gbc);this.add(naem2);this.setVisible(true);}public static void main(String[] args) {new GridBagLayoutDemo2().init();}}
CardLayout
以时间而非空间来管理组件。它将所加入的组件看成是一叠卡片,只有最上面的那张才可见。
CardLayout常用五个方法:first,last,previous,next,show。
CardLayout常用五个方法:first,last,previous,next,show。
package com.test;import java.awt.BorderLayout;import java.awt.Button;import java.awt.CardLayout;import java.awt.Frame;import java.awt.Label;import java.awt.Panel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class CardLayoutdemo extends Frame {CardLayout c =new CardLayout();Panel pl =new Panel();public void init(){String[] names={"J","Q","K","A","小王","大王"};pl.setLayout(c);for(int i=0;i<names.length;i++){Label l= new Label(""+names[i]);pl.add(l);}this.add(pl,BorderLayout.CENTER);Button pre= new Button("上一张");pre.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent arg0) {c.previous(pl);}});Button las = new Button("下一张");las.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {c.next(pl);}});Panel p = new Panel();this.add(p,BorderLayout.SOUTH);p.add(pre);p.add(las);this.setVisible(true);}public static void main(String[] args) {new CardLayoutdemo().init();}}
BoxLayout
BoxLayout布局管理器常常与Box容器结合使用。这种布局管理器降低了GridBagLayout布局管理器的
难度。通过构造器的参数可以设置放入受影响容器的排列方式。Box对象是一种容器,但是不能独立存在,默认布管理器是BoxLayout。
难度。通过构造器的参数可以设置放入受影响容器的排列方式。Box对象是一种容器,但是不能独立存在,默认布管理器是BoxLayout。
空布局(NullLayout)
使用组件的setBounds方法可以再深以为位置放入组件,极大的提高了灵活性,操作简单,但是,可移植性不强。代码示例:
package com.test;import java.awt.Button;import java.awt.Frame;import java.awt.Label;import java.awt.TextField;public class NullLayout extends Frame{public void init(){this.setLayout(null);Label l= new Label("登陆系统");Label l1 = new Label("用户名:");Label l2 = new Label("密 码:");TextField naem = new TextField(20);TextField naem2 = new TextField(20);Button reg= new Button("登陆");Button res= new Button("重置");l.setBounds(150,30,50,30);l1.setBounds(50, 60, 40, 40);l2.setBounds(50, 130, 40, 40);naem.setBounds(120, 60, 120, 40);naem2.setBounds(120, 130, 120, 40);reg.setBounds(100,250 , 40,40 );res.setBounds(200,250 , 40,40 );this.add(l);this.add(l2);this.add(l1);this.add(naem2);this.add(naem);this.add(res);this.add(reg);this.setSize(350,350);this.setResizable(false);this.setVisible(true);}public static void main(String[] args) {new NullLayout().init();}}
1 0
- Java基础(十五)-----GUI基础①
- 【Java GUI】Java GUI基础
- Java基础<十五>---> IO
- Java基础19-GUI
- Java GUI基础
- Java基础:GUI
- java基础(GUI)
- java基础之GUI
- Java基础(GUI)
- java基础8:GUI
- Java基础:GUI
- Java基础—GUI
- java基础GUI
- JAVA基础-GUI
- java基础--GUI
- java基础-GUI
- Java基础--------GUI
- Java基础--GUI
- C++11学习笔记(2) —— decltype
- linux下IPTABLES配置详解
- 什么时候使用引用?什么时候使用指针?什么时候安置传递?
- 创建动态添加上传文件页面
- linux中,查看符号表的方法
- Java基础(十五)-----GUI基础①
- 为什么你应该从现在开始写博客
- Netty初步之Hello World
- 菜鸟学SSH(九)——Hibernate——Session之save()方法
- C++11学习笔记(3)—— enum
- lambda小应用(Python)
- 最小生成树(MST) Kruskal 算法
- 题目1161:Repeater
- 在PPT和Word中添加带有语法高亮的代码块