首页 > 编程语言 >一个GUI的简单练习-------- Java记事本 简单实现 陆续完善中……

一个GUI的简单练习-------- Java记事本 简单实现 陆续完善中……

时间:2022-11-28 18:06:44浏览次数:40  
标签:-------- Java java GUI KeyEvent add file import new

package javanotpad;
public class MainFrame
{
/**
* @param args
* author javaAlpha
* 时间:2009年5月8日20:00:50
* java记事本
*/ public static void main(String[] args)
{
MenuFrame menu = new MenuFrame();
menu.initialize();
}
}

package javanotpad;
import java.awt.Color;
import java.awt.FileDialog;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.io.PrintStream;
import java.util.Properties;import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;public class MenuFrame extends JFrame implements ActionListener
{
private static final long serialVersionUID = 201269579650631599L;
private String filePath;// 文件路径
private JTextArea text;// 文本区
private JScrollPane scrollPane; // 滚动条
private JMenuBar menuBar;// 菜单栏
private JMenu file, edit, view, search, document, tool, window, help;// 主菜单
private JMenuItem fileItem1, fileItem2, fileItem3, fileItem4, fileItem5,
fileItem6, editItem1, editItem2, editItem3, editItem4, editItem5,
helpItem1;// 子菜单
private Toolkit toolkit = Toolkit.getDefaultToolkit();// 获取默认工具包
private Clipboard clipboard = toolkit.getSystemClipboard();// 该剪贴板使数据能够在Java应用程序和使用本机剪贴板工具的本机应用程序之间传输
private JFileChooser fileChoose = new JFileChooser();// 文件选择对话框
private FileDialog openFileDialog = new FileDialog(this, "打开文件",
FileDialog.LOAD);// 设置打开文件对话框
private FileDialog saveAsFileDialog = new FileDialog(this, "文件另存为",
FileDialog.SAVE);// 设置另存为文件对话框 @SuppressWarnings("static-access")
// 初始化窗口
public void initialize()
{
text = new JTextArea();
scrollPane = new JScrollPane(text);
text.setBackground(Color.white);// 设置文本框的背景颜色
text.setForeground(Color.black);// 设置文本框的前景颜色
scrollPane.setViewportView(text);// 创建一个视口(如果有必要)并设置其视图 initMenuBar();// 加载菜单栏
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);// 设置关闭窗口事件
this.setTitle("Java ");// 设置窗口标题
this.setSize(600, 700);// 设置窗口大小
this.setLocationRelativeTo(null);// 设置窗口位置
this.setVisible(true);// 设置窗口可见性
// this.add(text);// 文本编辑区域
// this.add(scrollPane);
this.getContentPane().add(scrollPane);// 设置滚动条
} // 初始化菜单栏
public void initMenuBar()
{
menuBar = new JMenuBar();
file = new JMenu("文件(F)");// 文件菜单
edit = new JMenu("编辑(E)");// 编辑菜单
view = new JMenu("视图(V)");// 视图菜单
search = new JMenu("搜索(S)");// 上搜菜单
document = new JMenu("文档(D)");// 文档菜单
tool = new JMenu("工具(T)");// 工具菜单
window = new JMenu("窗口(W)");// 窗口菜单
help = new JMenu("帮助(H)");// 帮助菜单 // 添加快捷键按键响应
file.setMnemonic(KeyEvent.VK_F);// ==file.setMnemonic('F');
edit.setMnemonic(KeyEvent.VK_E);
view.setMnemonic(KeyEvent.VK_V);
search.setMnemonic(KeyEvent.VK_S);
document.setMnemonic(KeyEvent.VK_D);
tool.setMnemonic(KeyEvent.VK_T);
window.setMnemonic(KeyEvent.VK_W);
help.setMnemonic(KeyEvent.VK_H); // 文件菜单项
fileItem1 = new JMenuItem("新建(N)", 'N');
fileItem2 = new JMenuItem("打开(O)", 'O');
fileItem3 = new JMenuItem("保存(S)", 'S');
fileItem4 = new JMenuItem("另存为(A)", 'A');
fileItem5 = new JMenuItem("退出(Q)", 'Q');
fileItem6 = new JMenuItem("打印(P)", 'P'); // 添加菜单子项的CTRL按键响应
fileItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
InputEvent.CTRL_MASK));
fileItem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));
fileItem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_MASK));
fileItem4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
InputEvent.CTRL_MASK));
fileItem5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,
InputEvent.CTRL_MASK));
fileItem6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
InputEvent.CTRL_MASK)); // 添加文件子菜单项
file.add(fileItem1);
file.addSeparator();// 添加分割线
file.add(fileItem2);
file.add(fileItem3);
file.add(fileItem4);
file.addSeparator();// 添加分割线
file.add(fileItem6);
file.addSeparator();// 添加分割线
file.add(fileItem5); // 添加编辑子菜单项
editItem1 = new JMenuItem("剪切");
editItem2 = new JMenuItem("粘贴");
editItem3 = new JMenuItem("复制");
editItem4 = new JMenuItem("查找");
editItem5 = new JMenuItem("全选");
edit.add(editItem1);
edit.add(editItem2);
edit.add(editItem3);
edit.addSeparator();// 添加分割线
edit.add(editItem4);
edit.addSeparator();// 添加分割线
edit.add(editItem5); // 添加帮助子菜单项
helpItem1 = new JMenuItem("关于");
help.add(helpItem1); // 往菜单栏添加菜单项
menuBar.add(file);
menuBar.add(edit);
menuBar.add(view);
menuBar.add(search);
menuBar.add(document);
menuBar.add(tool);
menuBar.add(window);
menuBar.add(help);
this.setJMenuBar(menuBar); // 给按钮添加事件
helpItem1.addActionListener(this);
fileItem1.addActionListener(this);
fileItem2.addActionListener(this);
fileItem3.addActionListener(this);
fileItem4.addActionListener(this);
fileItem5.addActionListener(this);
} @SuppressWarnings( { "deprecation", "static-access" })
@Override
public void actionPerformed(ActionEvent e)// 关于菜单项信息
{
Object eventSource = e.getSource();// 获取当前的事件源 if (eventSource == helpItem1)// 添加帮助事件
{
JOptionPane.showMessageDialog(null,
"copyright:QQ:562265123/r/n 时间:2009年5月5日", "关于",
JOptionPane.INFORMATION_MESSAGE);
} else if (eventSource == fileItem1)// 添加新建文件事件
{
this.text.setText("");// 将内容清空
this.setTitle("新建文本");// 设置新建文本的标题
} else if (eventSource == fileItem2)// 添加打开文件对话框事件
{
openFileDialog.show();// 显示打开文件对话框
filePath = openFileDialog.getDirectory() + openFileDialog.getFile();// 获取此文件对话框的目录和选择的文件
this.setTitle(filePath);// 设置窗口的标题为打开文件的路径
if (filePath != null)
{
readFile(filePath);
} } else if (eventSource == fileItem3)// 添加保存文件事件
{ int returnVal = fileChoose.showSaveDialog(MenuFrame.this);
if (returnVal == fileChoose.APPROVE_OPTION)
{
filePath = fileChoose.getSelectedFile().getAbsolutePath();
writerFile(filePath);
} else
{
JOptionPane.showMessageDialog(null, "文件将默认保存在:/n" + filePath,
"提示", JOptionPane.INFORMATION_MESSAGE);
} } else if (eventSource == fileItem4)// 添加另存为事件
{
saveAsFileDialog.show();// 显示另存为文件对话框
filePath = saveAsFileDialog.getDirectory()
+ saveAsFileDialog.getFile();// 获取此文件对话框的目录和选择的文件 if (filePath != null)
{
writerFile(filePath);
}
} else if (eventSource == fileItem5)// 添加退出程序事件
{
System.exit(0);
}
} void readFile(String path) // 显示打开文件的内容
{
try
{
File file = new File(path);
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file), "gb2312"));// 编码转换 String str = "";
int size = (int) file.length();
int charRead = 0;
char[] content = new char[size];
// byte[] content = new byte[size];
while (br.ready())
{
charRead += br.read(content, charRead, size - charRead);
}
br.close();
str = new String(content, 0, charRead);
text.setText(str);
} catch (IOException e)
{
System.out.println("读取文件出错");
}
} void writerFile(String path) // 保存文件内容
{
try
{
File file = new File(path);
FileWriter fw = new FileWriter(file);
fw.write(text.getText());
fw.close();
} catch (IOException e)
{
System.out.println("保存文件出错");
}
}
}

标签:--------,Java,java,GUI,KeyEvent,add,file,import,new
From: https://blog.51cto.com/javaalpha/5893223

相关文章

  • 错误解决:附加SQL Server 2000数据库 5118错误
    错误解决:附加SQLServer2000数据库5118错误一、错误信息:附加数据库对于服务器“192.168.0.121”失败。 (Microsoft.SqlServer.Smo)有关帮助信息,请单击:http://go.m......
  • Sql Server 2005 开发版亲测可用下载地址
    sqlserver2005开发版下载地址:http://222.132.81.146/rj/cs_sql_2005_dev_all_dvd.rar建议使用迅雷下载。sqlserver2005开发版迅雷下载地址:thunder://QUFodHRwOi8vMjIyLj......
  • Struts 2 拦截器中得到bean以及读取WEB-INF下的spring的xml文件
    Struts2拦截器中得到bean以及读取WEB-INF下的spring的xml文件1.直接得到beanpublicclassOperaLogInterceptorextendsAbstractInterceptor{privatestaticfinallo......
  • 霾愁
    霾愁古时候口罩是一种小小道具我在这头强盗在那头小时候口罩是我的小小恐惧我在这头护士的针头在那头后来呢口罩是03年的集体记忆我在这头SARS在那头而现在口......
  • 第一次参加拓展训练的收获,沟通的重要性——最终导致整个项目的失败
    今天下午一点半,平常就是开始正常上课的时间。冒着太阳公公的炎炎热情,开始了我们准备已久的拓展训练,参加人员有三个团队的人员。我们这个团队是好几个小的团队组成的,所有的队......
  • jsp servlet 中的页面路径问题
    user是项目根目录下的一个子目录。<!--修改前的--><framesetrows="80,*"><framesrc="top.jsp"name="top"><framesetcols="10%,*"><framesrc="/user/left.jsp"......
  • 关于自己2012年的那些事
    2012年总结 2012年的总结分为三个方面:工作、个人感情和跆拳道 1.3月4号离开了工作两年的公司,也是到北京的第一家公司,认识了很多好朋友,也学到了很多东西,自己也成长了很多。......
  • SQL 2005 附加 2000 数据库 的痛苦经历
    2000的数据库突然罢工了,又要用数据库,还好有2005的,想到要附加到2005下使用。就按照平时附加的方法,结果提示:5118错误。就去Google搜,结果就找到了类似的问题。在这里写出来给......
  • 只有伤心的理由,没有沉沦的借口。
    1、最美好的不是未来,是今天。阳光这么好,何必自寻烦恼。2、人生,就是一种简单的轨迹,一种平淡的重复。3、多时候,心里明明不是那样想的,却控制不了自己而说出相反的话。究竟是我......
  • 记一次 从servlet传参数到jsp页面出现乱码问题的解决参考
    rs=conn.executeQuery(sql);while(rs.next()){i++;//编号加1p_code=rs.getString("code");p_name=rs.getString("name");p_price=rs.getD......