/*
栗子 了解swing
*/
import javax.swing.*;
public class test_swing extends JFrame {
//继承JFrame顶层容器类(可以添加其他swing组件的类)
JButton jb1 = null; public static void main(String[] args) {
test_swing win = new test_swing();
} //构造函数
public test_swing(){
jb1 = new JButton("按钮");
this.add(jb1);
this.setTitle("Hello Swing World");
this.setSize(500,500);
this.setLocation(500,150);
//设置当关闭窗口时,保证JVM也退出
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}

【三大常⽤布局管理器】
布局管理器--介绍
1、概念
组件在容器(如JFrame)中的位置和⼤⼩是由布局管理器来决定的。所有的容器都会
使用一个布局管理器,通过它来自动进行组件的布局管理。
2、种类
java共提供了五种布局管理器: 流式布局管理器(FlowLayout)、 边界布局管理器
(BorderLayout)、 网格布局管理器(GridLayout)、 卡片布局管理器(CardLayout)、 网格包布
局管理器(GridBagLayout)。其中前三种是最常⻅的布局管理器。
边界布局BorderLayout--介绍
边界布局(BorderLayout)将容器简单的划分为东南西北5个区域,中间区域最大。
JFrame窗体, JDialog对话框组件默认布局方法

边界布局BorderLayout--注意事项
1、不是五个部分都必需添加;
2、中部组件会⾃动调节大小;
3、 JFrame, Jdialog默认布局管理器就是BorderLayout

import javax.swing.*;
import java.awt.*;
/*
栗子 边界布局BorderLayout使⽤演示
* 1、继承JFrame
* 2、定义你需要的各个组件
* 3、创建组件(在构造函数中组件)
* 4、添加组件
* 5、对窗体设置
* 6、显示窗体
*/ public class test_swing extends JFrame {
JButton jb1,jb2,jb3,jb4,jb5;
public test_swing(){
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.setSize(300,200);
this.setLocation(200,200);
//退出窗体后将JFrame同时关闭
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示窗体
this.setVisible(true);
} public static void main(String[] args) {
test_swing win = new test_swing(); } }

三⼤常⽤布局管理器--流式布局
流式布局FlowLayout--介绍
FlowLayout布局,按照组件的添加次序将按钮组件(当然也可以是别的组件)从左到右放置
在容器中。当到达容器的边界时,组件将放置到下⼀⾏中。 FlowLayout可以以左对⻬、居
中对⻬、以右对⻬的⽅式排列组件

import javax.swing.*;
import java.awt.*;
/*
栗子 流式布局FlowLayout使⽤演示
* 1、继承JFrame
* 2、定义你需要的各个组件
* 3、创建组件(在构造函数中组件)
* 4、添加组件
* 5、对窗体设置
* 6、显示窗体
*/ public class test_swing extends JFrame {
//定义组件
JButton jb1,jb2,jb3,jb4,jb5,jb6; public test_swing(){
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.setLayout(new FlowLayout(FlowLayout.LEFT)); //设置窗体属性
this.setTitle("流式布局演示");
this.setSize(300,200);
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //禁止用户改变窗体大小
this.setResizable(false); //显示窗体
this.setVisible(true); } public static void main(String[] args) {
test_swing win = new test_swing(); } }

三大常用布局管理器--网格
网格布局GridLayout--介绍
GridLayout布局, 听其名⽽知其意,它将容器分割成多⾏多列,组件被填充到每个⽹格
中,添加到容器中的组件⾸先放置在左上⻆的⽹格中,然后从左到右放置其它的组件,当
占满该行的所有网格后,接着继续在下一行从左到右放置组件

网格布局GridLayout--注意事项
1、组件的相对位置不随容器的缩放而变化,但大小会变化;
2、所有组件的大小相同;
3、可以通过GridLayout(int rows,int cols,int hgap,int vgap)来指定⽹格的⾏行列,水平间
隙/垂直间隙。
参数说明: rows:行数/cols:列数/hgap:垂直间隙/vgap:水平间隙

import javax.swing.*;
import java.awt.*;
/*
栗子 ⽹格布局GridLayout使⽤演示
* 1、继承JFrame
* 2、定义你需要的各个组件
* 3、创建组件(在构造函数中组件)
* 4、添加组件
* 5、对窗体设置
* 6、显示窗体
*/ public class test_swing extends JFrame {
//定义组件
int size = 9;
JButton jbs[] = new JButton[size]; public test_swing(){
for(int i=0;i<size;i++){
jbs[i] = new JButton(String.valueOf(i+1));
} //添加各个组件
for(int i=0;i<size;i++){
this.add(jbs[i]);
} //设置布局管理器,流式布局默认为剧中对齐
this.setLayout(new GridLayout(3,3,10,10)); //设置窗体属性
this.setTitle("流式布局演示");
this.setSize(300,200);
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //禁止用户改变窗体大小
this.setResizable(false); //显示窗体
this.setVisible(true); } public static void main(String[] args) { test_swing win = new test_swing(); } }

三大常用布局管理器--⼩结
开发GUI程序步骤
1、继承JFrame
2、定义需要的组件
3、创建组件
4、设置布局管理器
5、添加组件
6、显示窗体

⾯板组件(JPanel)--使⽤[Window005.java]
JPanel:⾯板组件,⾮顶层容器,⼀个界⾯只可以有⼀个JFrame窗体组件,但可以有多个
JPanel⾯板组件,⽽JPanel上也可以使⽤FlowLayout、 BorderLayout、 GirdLayout等各种
布局管理器,这样可以组合使⽤达到较为复杂的布局效果

⾯板(JPanel)组件--注意事项
1、 JPanel是JComponent的⼦类;
2、属于容器类组件,可以加⼊别的组件;
3、默认布局管理器是流式布局(FlowLayout)

import javax.swing.*;
import java.awt.*;
/*
栗子 多种布局管理器,面板组件(Jpanel)--使用
*/ public class test_swing extends JFrame {
//定义组件
JPanel jp1,jp2;
JButton jb1,jb2,jb3,jb4,jb5,jb6; public test_swing(){
//创建组件
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默认流布局) //添加JPanel
jp1.add(jb1);
jp1.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
jp2.add(jb5); //把Panel加入JFrame
this.add(jp1,BorderLayout.NORTH);
this.add(jb6,BorderLayout.CENTER);
this.add(jp2,BorderLayout.SOUTH); //设置窗体属性
this.setSize(300,250);
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //禁止用户改变窗体大小
this.setResizable(false); //显示窗体
this.setVisible(true); } public static void main(String[] args) {
test_swing win = new test_swing();
} }

import javax.swing.*;
import java.awt.*;
/*
栗子 Swing组件 文本框 (JTextField)/密码框(JPasswordField)/标签(JLable)
*/ public class test_swing extends JFrame {
//定义组件
JPanel jp1,jp2,jp3;
JLabel jlb1,jlb2;
JButton jb1,jb2;
JTextField jtf;
JPasswordField jpf; public test_swing(){
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
//标签
jlb1 = new JLabel("用户名");
jlb2 = new JLabel("密码");
//按钮
jb1 = new JButton("登录");
jb2 = new JButton("取消");
//文本框
jtf = new JTextField(10);
//密码框
jpf = new JPasswordField(10); //设置布局管理器
this.setLayout(new GridLayout(3,1)); //添加JPanel
jp1.add(jlb1);
jp1.add(jtf); jp2.add(jlb2);
jp2.add(jpf); jp3.add(jb1);
jp3.add(jb2); //把Panel加入JFrame
this.add(jp1);
this.add(jp2);
this.add(jp3); //设置窗体属性
this.setTitle("用户登录");
this.setSize(300,150);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示窗体
this.setVisible(true); } public static void main(String[] args) {
test_swing win = new test_swing();
} }

import javax.swing.*;
import java.awt.*;
/*
栗子 复选框(JCheckBox)和单选框(JRadioButton)
*/ public class test_swing extends JFrame {
//定义组件
JPanel jp1,jp2,jp3;
JLabel jl1,jl2;
JCheckBox jcb1,jcb2,jcb3;
JRadioButton jrb1,jrb2;
ButtonGroup bg;
JButton jb1,jb2; public test_swing(){
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel(); jl1 = new JLabel("你最喜欢的运动:");
jl2 = new JLabel("你的性别:"); jcb1 = new JCheckBox("足球");
jcb2 = new JCheckBox("篮球");
jcb3 = new JCheckBox("网球"); jrb1 = new JRadioButton("男");
jrb2 = new JRadioButton("女"); jb1 = new JButton("注册用户");
jb2 = new JButton("取消注册"); //一定要把jrb1与jrb2放到一个ButtonGroup中
ButtonGroup bg = new ButtonGroup();
bg.add(jrb1);
bg.add(jrb2); //创建布局
this.setLayout(new GridLayout(3,1)); //加入组件
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.setTitle("用户注册");
this.setSize(300,150);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true); } public static void main(String[] args) {
test_swing win = new test_swing();
} }

import javax.swing.*;
import java.awt.*;
/*
栗子 下拉框(JComboBox)/列表框(JList)/滚动空格(JScrollPane)
*/ public class test_swing extends JFrame {
//定义组件
JPanel jp1,jp2;
JLabel jl1,jl2;
JComboBox jcb;
JList jl;
JScrollPane jsp; public test_swing(){
//建立组件
jp1 = new JPanel();
jp2 = new JPanel(); jl1 = new JLabel("你的籍贯:");
jl2 = new JLabel("旅游地点:"); String[] jg = {"北京","上海","天津","火星"};
jcb = new JComboBox(jg); String[] dd = {"长城","东方明珠","海河","什么什么"};
jl = new JList(dd); //设置你希望显示多少个选项
jl.setVisibleRowCount(2);//滚动条显示setVisibleRowCount(?)?为显示条数
jsp = new JScrollPane(jl); //设定布局
this.setLayout(new GridLayout(3,1)); //加入组件
jp1.add(jl1);
jp1.add(jcb); jp2.add(jl2);
jp2.add(jsp); this.add(jp1);
this.add(jp2); //设置窗体
this.setTitle("用户注册");
this.setSize(300,300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true); } public static void main(String[] args) {
test_swing win = new test_swing();
} }

import javax.swing.*;
/*
栗子 金山词霸2007 拆分创个JsplllitPane属于容器类 【备注】 java中ImageIcon路径问题
一、问题 ImageIcon icon = new ImageIcon("logo.jpg"); 执行结果是icon无法显示 二、解决 类中有如下调用: ImageIcon icon = new ImageIcon("1.jpg"); 很自然地认为当前类文件和图片在同一路径下即可。 其实所谓的相对路径起点是工程的根目录,即project。 这行代码执行时在project目录下查找名为a.gif的文件,结果当然是找不到。 要得到工程的相对路径可通过System.getProperty("user.dir")得到。 对图片和对文件的查找应该是一致的,如new File()。 1、假如你的工程根目录为:Project1 你的图片文件放在:Project1/src/images/1.jpg 所以正确的调用是(不要加Project1): ImageIcon icon = new ImageIcon("src/images/1.jpg"); 2、假如你的工程根目录为:Project1 你的图片文件在:Project1/src/com.liuyanzhao/1.jpg 所以正确的调用是(com.liuyanzhao是包名) ImageIcon icon = new ImageIcon("src/com/liuyanzhao/1.jpg"); 这行代码执行时在project/test目录下查找到了文件 总结起来就是一句话:所谓相对路径就是相对于工程根目录的位置^_^ 三、其他
查看了一下ImageIcon的构造函数。
Public ImageIcon(String filename)//参数可以是绝对路径也可以是相对路径
Public ImageIcon(URL url) 第一种构造不在赘述。 第二种通过URL来得到图片 URL url = getClass().getResource("a.gif"); //当前编译后class文件所在目录查找
ImageIcon icon = new ImageIcon(url); ImageIcon支持GIF、JPG、PNG等格式。 原文地址:http://blog.csdn.net/anakinlu/article/details/5623688 */ public class test_swing extends JFrame {
//定义组件
JSplitPane jsp;
JList jl;
JLabel jlb; public test_swing(){
String[] words = {"boy","gril","bird","close"};
jl = new JList(words); jlb = new JLabel(new ImageIcon("images\\dog.jpg"));//这是相对路径
//下面是绝对路径
//jlb = new JLabel(new ImageIcon("D:\\zidonghua\\java_test_one\\src\\main\\java\\images\\dog.jpg")); //拆分创个
jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jl,jlb);
//可以收缩变化
jsp.setOneTouchExpandable(true); //设定布局管理器(JFrame本身就是BorderLayout布局) //加入组件
this.add(jsp); //设置窗体
this.setTitle("金山词霸2007");
this.setSize(400,300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true); } public static void main(String[] args) {
test_swing win = new test_swing();
} }

import javax.swing.*;
import java.awt.*;
/*
栗子 qq聊天界面 多行文本框(JTextArea)组件
*/ public class test_swing extends JFrame {
//定义组件
JTextArea jta = null;
JScrollPane jsp = null;
JPanel jp1 = null;
JComboBox jcb = null;
JTextField jtf = null;
JButton jb = null; public test_swing(){
//构建组件
jta = new JTextArea();
jsp = new JScrollPane(jta);
jp1 = new JPanel();
String[] chatter = {"布什","拉登"};
jcb = new JComboBox(chatter);
jtf = new JTextField(10);
jb = new JButton("发送"); //设定布局管理器(JFrame本身就是BorderLayout布局) //加入组件
jp1.add(jcb);
jp1.add(jtf);
jp1.add(jb); this.add(jsp);
this.add(jp1, BorderLayout.SOUTH); //设置窗体
this.setTitle("QQ聊天窗口");
this.setIconImage(new ImageIcon("images\\dog.jpg").getImage());//设置标题栏内图标
this.setSize(400,300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true); } public static void main(String[] args) {
test_swing win = new test_swing();
} }

import javax.swing.*;
import java.awt.*;
/*
栗子 qq登录页面 页签(JTabbedPane) 选项卡创个
*/ public class test_swing extends JFrame {
//定义组件
//主页面北部
JLabel jl1; //主页面南部
JButton jb1,jb2,jb3;
JPanel jp1; //主页面中部
JTabbedPane jtp;
JPanel jp2,jp3,jp4; JLabel jl2,jl3,jl4,jl5;
JTextField jtf;
JPasswordField jpf;
JButton jb4;
JCheckBox jcb1,jcb2; //JPanel2组件
JLabel jl6,jl7;
JTextField jtf1;
JPasswordField jpf1; //Jpanel3组件
JLabel jl8,jl9;
JTextField jtf2;
JPasswordField jpf2; public test_swing(){
//构建组件
jl1 = new JLabel(new ImageIcon("images/dog.jpg")); //创建JFrame中部JPanel2组件
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></html>");
jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//鼠标移动后jl5会变成手指图标 jtf = new JTextField();
jpf = new JPasswordField();
jb4 = new JButton("清除号码");//JButton上可以放图片。new JButton(new ImageIcon("图片路径")) jcb1 = new JCheckBox("隐身登录");
jcb2 = new JCheckBox("记住密码"); jtp = new JTabbedPane();//选项卡窗格
jp2 = new JPanel();
jp3 = new JPanel();
jp4 = new JPanel(); //创建JFrame中部JTabbedPane选项卡Jpanel3组件
jl6 = new JLabel("手机号码",JLabel.CENTER);
jl7 = new JLabel("密 码",JLabel.CENTER);
jtf1 = new JTextField(20);
jpf1 = new JPasswordField(20); //创建JFrame中部JtabbedPane选项卡Jpanel4组件
jl8 = new JLabel("电子邮箱",JLabel.CENTER);
jl9 = new JLabel("密 码",JLabel.CENTER);
jtf2 = new JTextField(20);
jpf2 = new JPasswordField(20); //创建JFrame南部Jpanel1组件
jp1 = new JPanel();
jb1 = new JButton("登 录");
jb2 = new JButton("取 消");
jb3 = new JButton("注册向导"); //设定布局管理器
jp2.setLayout(new GridLayout(3,1));
//jp3.setLayout(new GridLayout(2,2));
//jp4.setLayout(new GredLayout(2,2)); //加入组件
//将组件添加到Jpanel2中
jp2.add(jl2);//加入QQ号码标签
jp2.add(jtf);//加入文本框
jp2.add(jb4);//加入清除号码按钮 jp2.add(jl3);//QQ密码标签
jp2.add(jpf);//密码框
jp2.add(jl4);//忘记密码 jp2.add(jcb1);//隐身登录复选框
jp2.add(jcb2);//记住密码复选框
jp2.add(jl5);//申请密码保护标签 //将组件添加到JPanel3中
jp3.add(jl6);
jp3.add(jtf1);
jp3.add(jl7);
jp3.add(jpf1); //将组件添加到JPanel4中
jp4.add(jl8);
jp4.add(jtf2);
jp4.add(jl9);
jp4.add(jpf2); //添加到JPanel中
jp1.add(jb1);
jp1.add(jb2);
jp1.add(jb3); //将面板添加到选项卡窗格上
jtp.add("QQ号码",jp2);//第一个参数代表选项卡名称,第二个代表对应的面板 jtp.add("手机号码",jp3);
jtp.add("电子邮箱",jp4); //将JLabel1添加到Frame北部
this.add(jl1,BorderLayout.NORTH); //将Jpanle2添加到Frame中部
this.add(jtp,BorderLayout.CENTER); //将JPanel1添加到Frame南部
this.add(jp1,BorderLayout.SOUTH); //设置窗体
this.setTitle("QQ登录窗口");
this.setIconImage(new ImageIcon("images\\dog.jpg").getImage());//设置标题栏内图标
this.setSize(350,300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setResizable(false);//设置窗体大小不可改变 } public static void main(String[] args) {
test_swing win = new test_swing();
} }

import javax.swing.*;
import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
/*
栗子 记事本界面
1、菜单组件
JMenuBar 菜单条组件 树⼲
JMenu 菜单组件 树枝
JMenuItem 菜单项组件 树叶
2、⼆级菜单制作
JMenu⾥⾯可以嵌套JMenu
3、⼯具条组件
JToolBar 容器类组件
*/ public class test_swing extends JFrame {
//定义组件
JMenuBar jmb;//菜单条
JMenu menu1,menu2,menu3,menu4,menu5;//主菜单:文件、编辑、格式、查看、帮助
JMenuItem item2,item3,item4,item5,item6,item7;//子菜单:新建、打开、保存、另存为、页面设置、打印、退出
JMenu xinjian;//二级菜单
JMenuItem file,project; //编辑组定义组件
//编辑:撤销、剪切、复制、粘贴、删除、查找、查找下一个、转到、全选、时间/日期
JMenuItem eitem1,eitem2,eitem3,eitem4,eitem5,eitem6,eitem7,eitem8,eitem9,eitem10,eitem11; //格式组定义组件
JMenuItem oitem1,oitem2;//格式:自动换行、字体 //查看组定义组件
JMenuItem vitem1;//查看:状态栏 //帮助组定义组件
JMenuItem hitem1,hitem2;//帮助:查看帮助、关于记事本 JTextArea jta;
//工具条
JToolBar jtb;
JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8; public test_swing(){
//构建组件
//工具条
jtb = new JToolBar();
jb1 = new JButton(new ImageIcon("images/dog.jpg"));
jb1.setToolTipText("新建");
jb2 = new JButton(new ImageIcon("images/dog.jpg"));
jb2.setToolTipText("打开");
jb3 = new JButton(new ImageIcon("images/dog.jpg"));
jb3.setToolTipText("保存");
jb4 = new JButton(new ImageIcon("images/dog.jpg"));
jb4.setToolTipText("复制");
jb5 = new JButton(new ImageIcon("images/dog.jpg"));
jb5.setToolTipText("删除");
jb6 = new JButton(new ImageIcon("images/dog.jpg"));
jb6.setToolTipText("编辑");
jb7 = new JButton(new ImageIcon("images/dog.jpg"));
jb7.setToolTipText("打印");
jb8 = new JButton(new ImageIcon("images/dog.jpg"));
jb8.setToolTipText("关闭"); jmb = new JMenuBar(); //主菜单
menu1 = new JMenu("文件(F)");
menu1.setMnemonic('F');//设置助记符
menu2 = new JMenu("编辑(E)");
menu2.setMnemonic('E');
menu3 = new JMenu("格式(O)");
menu3.setMnemonic('O');
menu4 = new JMenu("查看(V)");
menu4.setMnemonic('V');
menu5 = new JMenu("帮助(H)");
menu5.setMnemonic('H'); //文件--新建--子目录
xinjian = new JMenu("新建");
file = new JMenuItem("文件");
project = new JMenuItem("工程"); item2 = new JMenuItem("打开(O)");
item2.setMnemonic('O');
//设置ctrl快捷组合键
item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
item3 = new JMenuItem("保存(S)");
item3.setMnemonic('S');
item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
item4 = new JMenuItem("另存为(A)");
item4.setMnemonic('A');
item5 = new JMenuItem("页面设置(U)");
item5.setMnemonic('U');
item6 = new JMenuItem("打印(P)");
item6.setMnemonic('P');
item6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
item7 = new JMenuItem("退出(X)");
item7.setMnemonic('X'); eitem1 = new JMenuItem("撤销(U)");
eitem1.setMnemonic('U');
eitem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
eitem2 = new JMenuItem("剪切(T)");
eitem2.setMnemonic('T');
eitem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_MASK));
eitem3 =new JMenuItem("复制(C)");
eitem3.setMnemonic('C');
eitem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
eitem4 = new JMenuItem("粘贴(P)");
eitem4.setMnemonic('P');
eitem4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
eitem5 = new JMenuItem("删除(L)");
eitem5.setMnemonic('L');
eitem5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
eitem6 = new JMenuItem("查找(F)");
eitem6.setMnemonic('F');
eitem6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
eitem7 = new JMenuItem("查找下一个(N)");
eitem7.setMnemonic('N');
eitem7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
eitem8 = new JMenuItem("替换(R)");
eitem8.setMnemonic('R');
eitem8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK));
eitem9 = new JMenuItem("转到(G)");
eitem9.setMnemonic('G');
eitem9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_MASK));
eitem10 = new JMenuItem("全选(A)");
eitem10.setMnemonic('A');
eitem10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
eitem11 = new JMenuItem("时间/日期(D)");
eitem11.setMnemonic('D');
eitem11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0)); oitem1 = new JMenuItem("自动换行(W)");
oitem1.setMnemonic('W');
oitem2 = new JMenuItem("字体(F)");
oitem2.setMnemonic('F'); vitem1 = new JMenuItem("状态栏(S)");
vitem1.setMnemonic('S'); hitem1 = new JMenuItem("查看帮助(H)");
hitem1.setMnemonic('H');
hitem2 = new JMenuItem("关于记事本(A)");
hitem2.setMnemonic('A'); jta = new JTextArea(); //设定布局管理器 //加入组件
//将按钮添加到工具条上
jtb.add(jb1);
jtb.add(jb2);
jtb.add(jb3);
jtb.add(jb4);
jtb.add(jb5);
jtb.add(jb6);
jtb.add(jb7);
jtb.add(jb8); //将菜单项添加到菜单上
xinjian.add(file);
xinjian.add(project); menu1.add(xinjian);
menu1.add(item2);
menu1.add(item3);
menu1.add(item4);
menu1.addSeparator();//添加分割线
menu1.add(item5);
menu1.add(item6);
menu1.addSeparator();
menu1.add(item7); menu2.add(eitem1);
menu2.addSeparator();
menu2.add(eitem2);
menu2.add(eitem3);
menu2.add(eitem4);
menu2.add(eitem5);
menu2.addSeparator();
menu2.add(eitem6);
menu2.add(eitem7);
menu2.add(eitem8);
menu2.add(eitem9);
menu2.addSeparator();
menu2.add(eitem10);
menu2.add(eitem11); menu3.add(oitem1);
menu3.add(oitem2); menu4.add(vitem1); menu5.add(hitem1);
menu5.addSeparator();
menu5.add(hitem2); //将菜单添加到菜单条
jmb.add(menu1);
jmb.add(menu2);
jmb.add(menu3);
jmb.add(menu4);
jmb.add(menu5); //将菜单条添加到窗体
this.setJMenuBar(jmb); //将工具条添加到窗体
this.add(jtb,BorderLayout.NORTH); JScrollPane jsp = new JScrollPane(jta);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
this.add(jsp); //设置窗体
this.setTitle("Java记事本");
this.setSize(500,400);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) {
test_swing win = new test_swing();
} }

												

最新文章

  1. C#中返回值封装
  2. IOS第八天(7:UITableViewController新浪微博,cell 复用的简单写法优化和cell高度从模型中获取)
  3. 在redis一致性hash(shard)中使用lua脚本的坑
  4. QueryInterface
  5. 【.NET基础】--委托、事件、线程(3)
  6. asp.net中runat=&quot;server&quot;的含义
  7. 用C语言实现ipv4地址字符串是否合法
  8. mysql建表且某字段内不允许出现重复值
  9. 来看看Github上流行的编码规范
  10. Customizing Zend Studio Using the Welcome Page
  11. 一个很简单的php留言板。。。。搭建在sae上的。。。
  12. 6.1熟知tsung.xml配置文件(翻译)
  13. LINQ基础(三)
  14. [转]Windows下安装storm-0.9.1
  15. team项目学习01
  16. PHP中json_encode()使用须知,JSON数组和JSON对象
  17. 多线程出现 java.lang.NumberFormatException: multiple points
  18. Centos7源码安装httpd2.4版本web服务器
  19. .gitignore 失效问题解决
  20. [Python]conda与 virtualenv虚拟环境配置

热门文章

  1. 51Nod 2020 排序相减
  2. shell脚本和python脚本实现批量ping IP测试
  3. Django框架----模板继承和静态文件配置
  4. Struts2 概述
  5. \r\n回车换行\r回车\n换行的区别
  6. 为了好好看球,学霸们用深度学习重建整个比赛3D全息图
  7. MyBatis框架入门之(二)
  8. 如何最快速的找到页面某一元素所绑定的点击事件,并查看js代码
  9. bzoj1019 / P4285 [SHOI2008]汉诺塔
  10. atomic 原子操作