【Java】【图形】

/*
栗子 了解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上也可以使⽤FlowLayoutBorderLayoutGirdLayout等各种
布局管理器,这样可以组合使⽤达到较为复杂的布局效果

 ⾯板(JPanel)组件--注意事项
1JPanelJComponent的⼦类;
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();
}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


posted @ 2018-02-09 11:46  素人渔芙2017  阅读(278)  评论(0编辑  收藏  举报