1、编写一个简单的文本编辑器,要求:具有打开、保存、新建,粘贴、复制等功能;具有一个工具条。
1.1、程序源码(参见menu.java):
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.URL;
public class menu extends JFrame implements ActionListener
{
public menu()
{
setDefaultCloseOperation(EXIT_ON_CLOSE);//程序退出
JMenuBar menuBar1 = new JMenuBar();//生成实例
JMenu menuFile = new JMenu("文件(File)");//菜单实例
JMenu menuEdit = new JMenu("编辑(E)");
JTable jTable = new JTable();//实例化表格
JToolBar toolBar = new JToolBar("mytoolbar!");//工具条实例
toolBar.setVisible(true);//设定可见
//定义备用的快捷键
menuFile.setMnemonic(KeyEvent.VK_F);
menuEdit.setMnemonic(KeyEvent.VK_E);
//menuFile的菜单项实例
String file [] ={"新建","打开","保存","另存为","","退出"};
KeyStroke keyStroke1[]={null,
KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK),
null,
null,
null,
KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK)
};
//menuEdit的菜单项实例
String edit [] ={"复制","粘贴"};
KeyStroke keyStroke2[]={
KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK),
KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK),
};
//调用createMenu函数
createMenu(menuBar1,menuFile,file,keyStroke1);
createMenu(menuBar1,menuEdit,edit,keyStroke2);
setJMenuBar(menuBar1);//放置菜单条
setBounds(200,200,400,300);//设定位置
//设置工具条上的第1个按钮“新建”
JButton jbtn1 = new JButton();
jbtn1.setText("新建");
jbtn1.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("you hava clicked "
+ ((JButton) e.getSource()).getText());
}
});
//设置工具条上的第2个按钮“打开”
JButton jbtn2 = new JButton();
jbtn2.setText("打开");
jbtn2.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("you hava clicked "
+ ((JButton) e.getSource()).getText());
}
});
//设置工具条上的第3个按钮“保存”
JButton jbtn3 = new JButton();
jbtn3.setText("保存");
jbtn3.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("you hava clicked "
+ ((JButton) e.getSource()).getText());
}
});
//设置工具条上的第4个按钮“另存为”
JButton jbtn4 = new JButton();
jbtn4.setText("另存为");
jbtn4.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("you hava clicked "
+ ((JButton) e.getSource()).getText());
}
});
//设置工具条上的第5个按钮“退出”
JButton jbtn5 = new JButton();
jbtn5.setText("退出");
jbtn5.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("you hava clicked "
+ ((JButton) e.getSource()).getText());
}
});
//设置工具条上的第6个按钮“复制”
JButton jbtn6 = new JButton();
jbtn6.setText("复制");
jbtn6.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("you hava clicked "
+ ((JButton) e.getSource()).getText());
}
});
//设置工具条上的第7个按钮 “粘贴”
JButton jbtn7 = new JButton();
jbtn7.setText("粘贴");
jbtn7.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("you hava clicked "
+ ((JButton) e.getSource()).getText());
}
});
//工具条添加按钮
toolBar.add(jbtn1);
toolBar.add(jbtn2);
toolBar.add(jbtn3);
toolBar.add(jbtn4);
toolBar.add(jbtn5);
toolBar.add(jbtn6);
toolBar.add(jbtn7);
this.getContentPane().add(toolBar, BorderLayout.NORTH);//添加工具条
}
//createMenu函数
public void createMenu(JMenuBar grandparent,
JMenu parent,
String[] items,
KeyStroke [] al)
{
for (int i = 0; i < items.length; i++)
{
JMenuItem r = null;
if (items[i] == "")
{
parent.addSeparator();
}
else
{
r=new JMenuItem(items[i]);
if (al[i]!=null)
{
r.setAccelerator(al[i]);
}
r.addActionListener(this);
parent.add(r);
}
}//for循环结束
grandparent.add(parent);
}//createMenu函数结束
public void actionPerformed(ActionEvent e)
{
String arg = e.getActionCommand();
System.out.println(arg);
if(arg.equals("退出"))
System.exit(0);
}
//main函数
public static void main(String[] args)
{
menu tt = new menu();
tt.show();
JFrame.setDefaultLookAndFeelDecorated(true);
}
}//程序结束
1.2、程序运行结果:
D:/jdk/xi>javac menu.java
注意:menu.java 使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
D:/jdk/xi>java menu
you hava clicked 新建
you hava clicked 打开
you hava clicked 另存为
you hava clicked 退出
you hava clicked 复制
you hava clicked 粘贴
只是有点可惜,没有实现“新建”、“打开”··键的功能,~~~~(>_<)~~~~