博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习(17)图形用户界面(1)
阅读量:4074 次
发布时间:2019-05-25

本文共 4814 字,大约阅读时间需要 16 分钟。

/**
 * 笔记:
 * 图形用户界面(GUI:Graphics User Interface):用户与程序交互的窗口,比命令行更加直观,更好操作。
 * 一、用什么开发GUI?
 *    历史:1.Sun提供跨平台GUI开发工具包AWT抽象窗口工具箱(Abstract Window Toolkit)。
 *         2.Sun创建一个新的GUI框架swing,解决了awt存在的Icd的问题。
 *         3.IBM认为swing比较消耗内存,创建了一个新的GUI库,这就是SWT。
 *         4.IBM为了方便开发SWT程序,在SWT基础上又创建了一个更易用,功能强大的图形包“JFace”。
 *    
 * 二、eclipse工具介绍(IDE:集成开发环境,例如eclipse,VS2015等等)
 *    1.一个开源的可扩展的开发环境。
 *    2.不能开发Java ee项目,需要安装WEB开发插件(lomboz 或 myeclipse) 。
 * 三、button组件
 *    1.JButton是AbstractButton 的子类。
 *    2.属于容器类组件,可以加入别的组件。
 *    3.Swing 包的按钮不只有JButton,还有单选按钮(JRadioButton),箭头按钮(BasicArrowButton),触发器按钮(JToggleButton)。
 * 四、布局管理器
 *    1.概念
 *      组件在容器中的位置和大小是由布局管理器来决定的。所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理器。
 *    2.分类(前三个最常用)
 *      (1)流式布局管理器(FlowLayout)
 *          按照组件的添加次序将组件从左到右放置在容器中,当达到容器的边界时,组件将放置在下一行中。
 *          FlowLayout可以以左对齐,居中对齐,右对齐的方式排列组件。
 *          注意事项:1.不限制他所管理的组件的大小,允许他们有最佳大小。
 *                  2.当容器被缩放时,组件的位置可能变化,但组件的大小不变。(如果不想让容器改变,this.Resizeable(false))。
 *                  3.默认组件是居中对齐,可以通过FlowLayout(int align)函数来指定对齐方式。
 *      (2)边界布局管理器(BorderLayout)
 *          将容器简单划分为东南西北中五个区域,中间区域位置最大。
 *          注意事项:1.不是五个部分都必须添加。
 *                  2.中部组件会自动调节大小。
 *                  3.Frame,JDialog默认布局管理器就是BorderLayout。
 *      (3)网格布局管理器(GridLayout)
 *          将容器分成多行多列,组件被填充到每个网格中,添加到容器中的组件首先放置到左上角的网格中。然后从左到右依次放置其他组件。
 *          当占满该行所有的网格后,接着在下一行从左到右放置组件。
 *          注意事项:1.组件的相对位置不随着容器的缩放而变化,但大小会有所变化。
 *                  2.所有组件大小相同。
 *                  3.可以通过GridLayout(int rows,int cols,int hgap,int vgap)来指定网格的行列和水平竖直间隙。
 *                    //其中,rows是行数,cols是列数,hgap是垂直间隙,vgap是竖直间隙。
 *      (4)卡片布局管理器(CardLayout)
 *      (5)网格包布布局管理器(GridBagLayout)
 * 五、面板组件(Jpanel)—— 布局管理器的组合使用     
 *    JPanel是非顶层容器,一个界面只可以有一个JFrame窗体组件。但是可以有多个JPanel面板组件,JPanel可以使用各种布局管理器。
 *    注意事项:1.JPanel是JComponent的子类。
 *            2.属于容器类组件,可以加入到别的组件。
 *            3.默认布局管理器是流式布局(FlowLayout)。
 *    
 */
package com.shuiyixin1;import java.awt.*;import javax.swing.*;/** * @作者:shuiyixin * @日期:2018.02.16 * @内容:图形用户界面(GUI) *  */public class learnJ_008tuxing extends JFrame{	//在类中定义一个button,将需要的组件定义到主函数前。	JButton jbu1,jbu2,jbu3,jbu4,jbu5,jbu6 = null;		int size  = 9;	JButton jbu[] =new JButton[size];		JPanel jp1,jp2;	public static void main(String[] args) {		// TODO Auto-generated method stub		learnJ_008tuxing tx1 = new learnJ_008tuxing();		learnJ_008tuxing tx2 = new learnJ_008tuxing();		learnJ_008tuxing tx3 = new learnJ_008tuxing();				//tx1.tuxing_BorderLayout();		//tx2.tuxing_FlowLayout();		//tx3.tuxing_GridLayout();		tx1.tuxing_Jpanel();			}	//边界布局管理器。	public void tuxing_BorderLayout(){		//步骤:		//     1.继承JFrame(类中继承)		//     2.定义所需组件(类体内定义)		//     3.创建组件(一般情况采用构造函数)		//     4.添加各个组件		//     5.设置窗体属性		//     6.显示窗体				//JFrame是一个顶层容器类。(可以添加其他swing组件的类)		//JFrame jf = new JFrame();				//swing组件之button		jbu1 = new JButton("东");		jbu2 = new JButton("西");		jbu3 = new JButton("南");		jbu4 = new JButton("北");		jbu5 = new JButton("中");				//添加JButton组件,只有一个时,默认占据全部JFrame		this.add(jbu1, BorderLayout.EAST);		this.add(jbu2, BorderLayout.WEST);		this.add(jbu3, BorderLayout.SOUTH);		this.add(jbu4, BorderLayout.NORTH);		this.add(jbu5, BorderLayout.CENTER);				//窗口		this.setTitle("边界布局管理器");//给窗口设置标题		this.setSize(200, 200);//设置大小,按像素(1像素 = ?厘米)		this.setLocation(100, 200);//设置初始位置		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当前关闭窗口,保证jvm也退出。				//显示		this.setVisible(true);			}		//流式布局管理器	public void tuxing_FlowLayout(){				//button组件		jbu1 = new JButton("关羽");		jbu1.setSize(100, 10);//不会改变组建的大小。		jbu2 = new JButton("张飞");		jbu3 = new JButton("赵云");		jbu4 = new JButton("马超");		jbu5 = new JButton("黄忠");				//添加组件		this.add(jbu1);		this.add(jbu2);		this.add(jbu3);		this.add(jbu4);		this.add(jbu5);				//设置组件为流式布局		this.setLayout(new FlowLayout(FlowLayout.LEFT));				//窗口		this.setTitle("流式布局管理器");//定义窗体标题		this.setSize(200, 200);//定义窗体大小,可更改		this.setLocation(100, 200);//定义窗体位置,可更改		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出时保证jvm也关闭。		this.setResizable(false);		//显示		this.setVisible(true);	}	//网格布局管理器	public void tuxing_GridLayout(){		//创建组件		for (int i = 0; i < size; i++) {			jbu[i] = new JButton(String.valueOf(i));		}		//设置网格布局		this.setLayout(new GridLayout(3,3,10,10));				//添加组件		for (int i = 0; i < size; i++) {			this.add(jbu[i]);		}				//设置窗体属性		this.setTitle("网格布局管理器");		this.setSize(300, 210);		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		this.setLocation(200, 200);				//显示		this.setVisible(true);	}		//面板组件多种布局管理器的使用	public void tuxing_Jpanel(){		jp1 = new JPanel();		jp2 = new JPanel();		jbu1 = new JButton("西瓜");		jbu2 = new JButton("苹果");		jbu3 = new JButton("荔枝");		jbu4 = new JButton("葡萄");		jbu5 = new JButton("橘子");		jbu6 = new JButton("香蕉");				//设置布局管理器				//添加组件		jp1.add(jbu1);		jp1.add(jbu2);		jp2.add(jbu3);		jp2.add(jbu4);		jp2.add(jbu5);				//把Panel加入JFrame		this.add(jp1,BorderLayout.NORTH);		this.add(jbu6, BorderLayout.CENTER);		this.add(jp2,BorderLayout.SOUTH);				//设置窗体属性		this.setTitle("面板组件");		this.setSize(300, 210);		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		this.setLocation(200, 200);				//显示		this.setVisible(true);					}}

转载地址:http://nyyni.baihongyu.com/

你可能感兴趣的文章
Android自定义apk名称、版本号自增
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Candy(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>
layui插件的使用
查看>>