您的位置:首页 > 编程语言 > Java开发

java开发之图形界面GUI初步-Swing几种常用组件及其应用

2013-02-05 16:21 429 查看
package test;

import java.awt.*;
import java.awt.event.KeyEvent;

import javax.swing.*;

/*
* 作者:钟志钢
* 功能:图形界面GUI,Swing
* 日期:2013-2-2
* 1. awt, swt,swing,jFace之间关联
* 		awt,sun公司提供的GUI开发工具包AWT(Abstract Window Toolkit),包括一些抽象窗口工具
* 		swing,sun公司的又一个GUI框架,解决了awt存在的lcd(本地化)问题
* 		awt,IBM创建的一个新的GUI库,认为Swing很消耗内存
* 		JFace,IBM提供的更强大的GUI工具
* 2, 布局管理器:
* 		边界布局(BorderLayout),
* 		流式布局(FlowLayout,从左到右,自动换行)
* 		网格布局(GridLayout)
*
* 3, 界面开发的一般步骤:
* 		继承JFrame
* 		定义组件(大类)
* 		创建组件(构造函数)
* 		添加组件(加入到JFrame)
* 		对窗体进行设置
* 		显示窗体
* 4, 面板组件,JPael,多布局管理器,非顶层容器,默认为流式布局
*/
public class 图形界面GUI extends JFrame{//在类里继承JFrame
//JButton jb ;//在此定义组件
JButton jb1,jb2,jb3,jb4,jb5,jb6;//按钮
JPanel jp1,jp2,jp3,jp4,jp5;//面板
JLabel jl1,jl2,jl3,jl4,jl5;//标签
JTextField jtf1,jtf2;//可编辑文本框
JPasswordField jpf1;//密码框
JCheckBox jcb1,jcb2,jcb3 ;//复选框
JRadioButton jrb1,jrb2 ;//单选框,需要先放入到ButtonGroup中,否则不能实现单选
ButtonGroup bg ;
JComboBox jcb ;//下拉框
JList jl ;//列表框组件
JScrollPane jsp ;//滚动条,通常与JList结合使用
JSplitPane jsp1 ;//拆分窗口,容器类组件
JTextArea jta ; //多行文本框
JTabbedPane jtp ;//选项卡窗格
JMenuBar jmb ;//菜单条组件:树干
JMenu jm1,jm2,jm3,jm4,jm5, jm6 ;//菜单条组件:树枝,下面可再有树枝...直到树叶 为止
JMenuItem jmi1,jmi2,jmi3,jmi4,jmi5,jmi6,jmi7, jmi8,jmi9 ;//菜单项组件:树叶
JToolBar jtb ;//容器类组件,又叫功能组件
int size = 9;
JButton [] jbs = new JButton[size];
public static void main(String args[]){
图形界面GUI gui = new 图形界面GUI();
}
public 图形界面GUI(){
//JFrame jf = new JFrame();//窗体,继承之后就不用实例化了
//		this.setTitle("hi, JFrame");//标题,继承之后就用this代替jf;
//		this.setSize(400, 400);//大小(像素)
//		this.setLocation(100,200);//设置窗体的位置,x = 100, y = 200;
//		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
//		this.setVisible(true);//显示,默认为false

//边界布局,BorderLayout
//		jb1 = new JButton("中");//实例化按钮并设置文字
//		jb2 = new JButton("北");//实例化按钮并设置文字
//		jb3 = new JButton("东");//实例化按钮并设置文字
//		jb4 = new JButton("南");//实例化按钮并设置文字
//		jb5 = new JButton("西");//实例化按钮并设置文字
//		this.add(jb1,BorderLayout.CENTER);//添加组件
//		this.add(jb2,BorderLayout.NORTH);
//		this.add(jb3,BorderLayout.EAST);
//		this.add(jb4,BorderLayout.SOUTH);
//		this.add(jb5,BorderLayout.WEST);//当缺少一个方向时,中间就会马上占有其"地盘"
//		this.setTitle("我是边界布局");
//		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
//		this.setSize(200, 200);//大小(像素)
//		this.setVisible(true);//显示,默认为false

//流式布局,FlowLayout
//		jb1 = new JButton("关雨");//实例化按钮并设置文字
//		jb2 = new JButton("张飞");
//		jb3 = new JButton("赵云");
//		jb4 = new JButton("马超");
//		jb5 = new JButton("刘备");
//		jb6 = new JButton("我地");
//		this.add(jb1);
//		this.add(jb2);
//		this.add(jb3);
//		this.add(jb4);
//		this.add(jb5);
//		this.add(jb6);
//		//设置布局方式,并设置对齐方式,默认为居中
//		this.setLayout(new FlowLayout(FlowLayout.LEFT));
//		this.setTitle("我是流式布局");
//		this.setResizable(false);//设置用户不能随意修改大小
//		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
//		this.setSize(300, 400);//大小(像素)
//		this.setLocation(200,200);//设置窗体的位置,x = 200, y = 200;
//		this.setVisible(true);//显示,默认为false

//网格布局GridLayout
//		for(int i = 0; i < size; i ++){
//			System.out.println("aa");
//			jbs[i] = new JButton(String.valueOf(i+1));
//			this.add(jbs[i]);
//		}
//		//设置网格布局,参数分别表示:3行,3列,水平间距,垂直间距
//		this.setLayout(new GridLayout(3, 3, 5, 5));
//		this.setTitle("我是网格布局");
//		this.setResizable(false);//设置用户不能随意修改大小
//		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
//		this.setSize(300, 400);//大小(像素)
//		this.setLocation(200,200);//设置窗体的位置,x = 200, y = 200;
//		this.setVisible(true);//显示,默认为false

//面板管理器,JPanel
//		jp1 = new JPanel();//默认为流布局
//		jp2 = new JPanel();
//		jb1 = new JButton("西瓜");
//		jb2 = new JButton("苹果");
//		jb3 = new JButton("香蕉");
//		jb4 = new JButton("桔子");
//		jb5 = new JButton("木瓜");
//		jb6 = new JButton("荔枝");
//		//添加到JPanel
//		jp1.add(jb1);
//		jp1.add(jb2);
//		jp2.add(jb3);
//		jp2.add(jb4);
//		jp2.add(jb5);
//		//加入到JFame
//		this.add(jp1, BorderLayout.NORTH);
//		this.add(jp2, BorderLayout.SOUTH);
//		this.add(jb6, BorderLayout.CENTER);
//		this.setTitle("我是面板布局");
//		this.setResizable(false);//设置用户不能随意修改大小
//		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
//		this.setSize(300, 200);//大小(像素)
//		this.setLocation(200,200);//设置窗体的位置,x = 200, y = 200;
//		this.setVisible(true);//显示,默认为false

//几个常用组件的综合应用:登录系统-可编辑文本框,标签,密码框
//		jb1 = new JButton("确定");
//		jb2 = new JButton("取消");
//		jl1 = new JLabel("用户名");
//		jl2 = new JLabel("密     码");
//		jpf1 = new JPasswordField(10);//实例化并设置大小
//		jtf1 = new JTextField(10);
//		//定义面板
//		jp1 = new JPanel();
//		jp2 = new JPanel();
//		jp3 = new JPanel();
//		//组件加入面板
//		jp1.add(jl1);
//		jp1.add(jtf1);
//		jp2.add(jl2);
//		jp2.add(jpf1);
//		jp3.add(jb1);
//		jp3.add(jb2);
//		this.add(jp1);
//		this.add(jp2);
//		this.add(jp3);
//		//设置布局方式
//		this.setLayout(new GridLayout(3,1,1,1));
//		this.setTitle("请登录");
//		this.setResizable(false);//设置用户不能随意修改大小
//		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
//		this.setSize(300, 170);//大小(像素)
//		this.setLocation(200,200);//设置窗体的位置,x = 200, y = 200;
//		this.setVisible(true);//显示,默认为false

//几个常用组件的综合应用:复选框与单选框
//		jl1 = new JLabel("你喜欢的水果:");
//		jl2 = new JLabel("您的性别:");
//		jb1 = new JButton("注册");
//		jb2 = new JButton("取消");
//		jcb1 = new JCheckBox("苹果");
//		jcb2 = new JCheckBox("桔子");
//		jcb3 = new JCheckBox("香蕉");
//		jrb1 = new JRadioButton("男");
//		jrb2 = new JRadioButton("女");
//		bg = new ButtonGroup();
//		bg.add(jrb1);//把单选按钮放入到bg中
//		bg.add(jrb2);
//		//面板
//		jp1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
//		jp2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
//		jp3 = new JPanel();
//		jp1.add(jl1);
//		jp1.add(jcb1);
//		jp1.add(jcb2);
//		jp1.add(jcb3);
//		jp2.add(jl2);
//		jp2.add(jrb1);
//		jp2.add(jrb2);
//		jp3.add(jb1);
//		jp3.add(jb2);
//		this.add(jp1);
//		this.add(jp2);
//		this.add(jp3);
//		this.setLayout(new GridLayout(3,1,1,1));
//		this.setTitle("请登录");
//		this.setResizable(false);//设置用户不能随意修改大小
//		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
//		this.setSize(300, 150);//大小(像素)
//		this.setLocation(200,200);//设置窗体的位置,x = 200, y = 200;
//		this.setVisible(true);//显示,默认为false

//几个常用组件的综合应用:列表框,下拉框,
//		jl1 = new JLabel("请选择城市:");
//		jl2 = new JLabel("请选择景点:");
//		String jg [] = new String[]{"北京", "南京", "天津"};
//		jcb = new JComboBox(jg);
//		String jd [] = new String[]{"长城", "天安门", "黄河"};
//		jl = new JList(jd);
//		jl.setVisibleRowCount(2);////设置希望显示多少个选项
//		jsp = new JScrollPane(jl);//把列表加入到滚动条中
//		//面板
//		jp1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
//		jp2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
//		jp1.add(jl1);
//		jp1.add(jcb);
//		jp2.add(jl2);
//		jp2.add(jsp);//加入带列表的滚动条
//		this.add(jp1);
//		this.add(jp2);
//		this.setLayout(new GridLayout(2,1,1,1));
//		this.setTitle("请选择");
//		this.setResizable(false);//设置用户不能随意修改大小
//		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
//		this.setSize(300, 200);//大小(像素)
//		this.setLocation(200,200);//设置窗体的位置,x = 200, y = 200;
//		this.setVisible(true);//显示,默认为false

//拆分窗口
//		String words [] = new String []{"girl","boy","book","good" };
//		jl = new JList(words);
//		jl1 = new JLabel(new ImageIcon("images/bd.jpg"));
//		jsp1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jl, jl1);//水平拆分
//		jsp1.setOneTouchExpandable(true);//拆分的窗口可伸缩
//		this.add(jsp1);
//		this.setTitle("拆分窗口");
//		this.setResizable(false);//设置用户不能随意修改大小
//		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
//		this.setSize(500, 500);//大小(像素)
//		this.setLocation(200,200);//设置窗体的位置,x = 200, y = 200;
//		this.setVisible(true);//显示,默认为false

//QQ聊天界面
//		jta = new JTextArea();
//		jsp = new JScrollPane(jta);//加入滚动条
//		jp1 = new JPanel();
//		String myj [] = new String [] {"钟志钢","王磊","刘绮霞"};
//		jcb = new JComboBox(myj);
//		jtf1 = new JTextField(20);
//		jb1 = new JButton("发送");
//		jp1.add(jcb);
//		jp1.add(jtf1);
//		jp1.add(jb1);
//		this.setLayout(new BorderLayout());
//		this.add(jsp);
//		this.add(jp1, BorderLayout.SOUTH);
//		this.setTitle("qq聊天");
//		this.setIconImage(new ImageIcon("images/f8.png").getImage());//设置Icon
//		this.setResizable(false);//设置用户不能随意修改大小
//		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
//		this.setSize(500, 500);//大小(像素)
//		this.setLocation(200,200);//设置窗体的位置,x = 200, y = 200;
//		this.setVisible(true);//显示,默认为false

//qq登录界面
//		jl1 = new JLabel(new ImageIcon("images/bg.gif"));
//		jl2 = new JLabel("QQ号码", JLabel.CENTER);
//		jl3 = new JLabel("QQ密码", JLabel.CENTER);
//		jl4 = new JLabel("忘记密码", JLabel.CENTER);
//		jl4.setFont(new Font("宋体", Font.PLAIN, 16));//设置字体
//		jl4.setForeground(Color.BLUE);
//		jl5 = new JLabel("<html><a href='www.qq.com'>申请密码保护</a>");//设置超链接
//		jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//鼠标变成"手形"
//		jcb1 = new JCheckBox("隐身登录");
//		jcb2 = new JCheckBox("记住密码");
//		jtf1 = new JTextField();
//		jpf1 = new JPasswordField();
//		jtp = new JTabbedPane();
//		jp1 = new JPanel();
//		jp2 = new JPanel(new GridLayout(3,3,5,5));
//		jp3 = new JPanel();
//		jp3.setBackground(Color.BLUE);
//		jp4 = new JPanel();
//		jp4.setBackground(Color.CYAN);
//		jb4 = new JButton("清除号码");
//		jb1 = new JButton("登          录");
//		jb2 = new JButton("取          消");
//		jb3 = new JButton("注册向导");
//		jp1.add(jb1);
//		jp1.add(jb2);
//		jp1.add(jb3);
//		jp2.add(jl2);
//		jp2.add(jtf1);
//		jp2.add(jb4);
//		jp2.add(jl3);
//		jp2.add(jpf1);
//		jp2.add(jl4);
//		jp2.add(jcb1);
//		jp2.add(jcb2);
//		jp2.add(jl5);
//		jtp.add("QQ号码",jp2);
//		jtp.add("手机号码",jp3);
//		jtp.add("QQ邮箱",jp4);
//		this.setLayout(new BorderLayout());
//		this.add(jtp);
//		this.add(jl1, BorderLayout.NORTH);
//		this.add(jp1, BorderLayout.SOUTH);
//		//this.setTitle("qq聊天");
//		this.setIconImage(new ImageIcon("images/f8.png").getImage());//设置Icon
//		this.setResizable(false);//设置用户不能随意修改大小
//		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
//		this.setSize(300, 250);//大小(像素)
//		this.setLocation(500,400);//设置窗体的位置,x = 200, y = 200;
//		this.setVisible(true);//显示,默认为false

//记事本:菜单应用
jtb = new JToolBar();//新建工具条
jb1 = new JButton("新建");
jb1.setToolTipText("新建一个文件");//设置当鼠标移动到这个按钮时显示的提示信息
jb2 = new JButton("保存");
jb2.setToolTipText("保存一个文件");
jb3 = new JButton("打开");
jb4 = new JButton("复制");
jb5 = new JButton("粘贴");
jb6 = new JButton("剪切");
jmb = new JMenuBar();//新建菜单条:树干
jm1 = new JMenu("文件(F)");
jm1.setMnemonic('F');//设置助记符
jm2 = new JMenu("编辑(E)");
jm2.setMnemonic('E');
jm3 = new JMenu("格式(O)");
jm3.setMnemonic('O');
jm4 = new JMenu("查看(V)");
jm4.setMnemonic('V');
jm5 = new JMenu("帮助(H)");
jm5.setMnemonic('H');
jm6 = new JMenu("新建");
jmi1 = new JMenuItem("文件");
jmi2 = new JMenuItem("工程");
jmi3 = new JMenuItem("打开", new ImageIcon("iamges/f8.png"));
jmi4 = new JMenuItem("保存(s)");
jmi4.setMnemonic('S');
//jmi4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.vk_S,));
jmi5 = new JMenuItem("另存为");
jmi6 = new JMenuItem("页面设置");
jmi7 = new JMenuItem("打印");
jmi8 = new JMenuItem("退出");
jm6.add(jmi1);//新建中加入树叶
jm6.add(jmi2);
jm1.add(jm6);//为文件菜单加入树枝树叶
//jm1.add(jmi2);
jm1.add(jmi3);
jm1.add(jmi4);
jm1.add(jmi5);
jm1.addSeparator();//加入分割线
jm1.add(jmi6);
jm1.add(jmi7);
jm1.addSeparator();
jm1.add(jmi8);
jmb.add(jm1);//将菜单添加到菜单条上
jmb.add(jm2);
jmb.add(jm3);
jmb.add(jm4);
jmb.add(jm5);
jta = new JTextArea();//多行文本框
jtb.add(jb1);
jtb.add(jb2);
jtb.add(jb3);
jtb.add(jb4);
jtb.add(jb5);
jtb.add(jb6);
//将菜单条加入到窗体上
this.setJMenuBar(jmb);
this.add(jtb, BorderLayout.NORTH);//将工具条加入到窗体(布局)中
jsp = new JScrollPane(jta);
//jsp.setVerticalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//设置下拉条风格
this.add(jsp);
this.setTitle("记事本");
this.setIconImage(new ImageIcon("images/f8.png").getImage());//设置Icon
this.setResizable(false);//设置用户不能随意修改大小
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当窗体关闭时,退出jvm(虚拟机);
this.setSize(400, 550);//大小(像素)
this.setLocation(500,400);//设置窗体的位置,x = 200, y = 200;
this.setVisible(true);//显示,默认为false

}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: