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
}
}