本文共 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/