问题描述:请使用Java编程语言实现图形化的写字板,能够完成写字寄存和擦除的功能。

程序源码:

import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
import java.io.*;
import javax.swing.*;
import javax.swing.text.*;public class JNotePadUI extends JPanel
{// 变量定义JTextArea jta = new JTextArea("", 24, 40);JScrollPane jsp = new JScrollPane(jta);// 菜单条JMenuBar jmb = new JMenuBar();JMenu file = new JMenu("文件(F)", true);JMenu edit = new JMenu("编辑(E)", true);JMenu help = new JMenu("帮助(H)", true);// 工具条JToolBar toolBar = new JToolBar();// 菜单内容JMenuItem jmi;// 实例化剪切板Clipboard clipbd = getToolkit().getSystemClipboard();String text = "";// 构造函数public JNotePadUI() {class newL implements ActionListener {public void actionPerformed(ActionEvent e) {jta.setDocument(new PlainDocument());}}// 打开功能class openL implements ActionListener {public void actionPerformed(ActionEvent e) {JFileChooser fc = new JFileChooser();int returnVal = fc.showDialog(JNotePadUI.this, "打开");if (returnVal == JFileChooser.APPROVE_OPTION) {String file = fc.getSelectedFile().getPath();if (file == null) {return;}// 读取文件try {Reader in = new FileReader(file);char[] buff = new char[4096];int nch;while ((nch = in.read(buff, 0, buff.length)) != -1) {jta.setDocument(new PlainDocument());jta.append(new String(buff, 0, nch));}} catch (IOException io) {System.err.println("IOException: " + io.getMessage());}} else {return;}}}// 保存文件class saveL implements ActionListener {public void actionPerformed(ActionEvent e) {JFileChooser fc = new JFileChooser();int returnVal = fc.showSaveDialog(JNotePadUI.this);if (returnVal == JFileChooser.APPROVE_OPTION) {String savefile = fc.getSelectedFile().getPath();if (savefile == null) {return;} else {String docToSave = jta.getText();if (docToSave != null) {FileOutputStream fstrm = null;BufferedOutputStream ostrm = null;try {fstrm = new FileOutputStream(savefile);ostrm = new BufferedOutputStream(fstrm);byte[] bytes = null;try {bytes = docToSave.getBytes();} catch (Exception e1) {e1.printStackTrace();}ostrm.write(bytes);} catch (IOException io) {System.err.println("IOException: "+ io.getMessage());} finally {try {ostrm.flush();fstrm.close();ostrm.close();} catch (IOException ioe) {System.err.println("IOException: "+ ioe.getMessage());}}}}} else {return;}}}// 退出class exitL implements ActionListener {public void actionPerformed(ActionEvent e) {System.exit(0);}}// 复制class copyL implements ActionListener {public void actionPerformed(ActionEvent e) {String selection = jta.getSelectedText();StringSelection clipString = new StringSelection(selection);clipbd.setContents(clipString, clipString);}}// 剪切class cutL implements ActionListener {public void actionPerformed(ActionEvent e) {String selection = jta.getSelectedText();StringSelection clipString = new StringSelection(selection);clipbd.setContents(clipString, clipString);jta.replaceRange("", jta.getSelectionStart(), jta.getSelectionEnd());}}// 粘贴class pasteL implements ActionListener {public void actionPerformed(ActionEvent e) {Transferable clipData = clipbd.getContents(JNotePadUI.this);try {String clipString = (String) clipData.getTransferData(DataFlavor.stringFlavor);jta.replaceRange(clipString, jta.getSelectionStart(), jta.getSelectionEnd());} catch (Exception ex){}}}// 删除class deleteL implements ActionListener {public void actionPerformed(ActionEvent e) {jta.replaceRange("", jta.getSelectionStart(), jta.getSelectionEnd());}}//帮助class help_h implements ActionListener{public void actionPerformed(ActionEvent e){JOptionPane.showMessageDialog(jta,"写字板支持拖入文本读取\n" + "由于对编码不熟悉做得\n不是很好 \n ", "帮助主题", JOptionPane.INFORMATION_MESSAGE);}}//关于class help_a implements ActionListener{public void actionPerformed(ActionEvent e){JOptionPane.showMessageDialog(jta,"有不懂的地方联系\n" + "   " + "     JAVA图形界面练习\n", "关于记事本", JOptionPane.INFORMATION_MESSAGE);}}// 事件监听class jtaL implements ActionListener {public void actionPerformed(ActionEvent e) {}}// 快捷键设置file.add(jmi = new JMenuItem("新建N", 'N'));jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));jmi.addActionListener(new newL());file.add(jmi = new JMenuItem("打开O", 'O'));jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));jmi.addActionListener(new openL());file.add(jmi = new JMenuItem("保存S", 'S'));jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));jmi.addActionListener(new saveL());file.addSeparator();file.add(jmi = new JMenuItem("退出E", 'E'));jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK));jmi.addActionListener(new exitL());edit.add(jmi = new JMenuItem("复制C", 'C'));jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));jmi.addActionListener(new copyL());edit.add(jmi = new JMenuItem("剪切X", 'X'));jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));jmi.addActionListener(new cutL());edit.add(jmi = new JMenuItem("粘帖V",'V'));jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));jmi.addActionListener(new pasteL());edit.add(jmi = new JMenuItem("删除D", 'D'));jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK));jmi.addActionListener(new deleteL());edit.addSeparator();help.add(jmi = new JMenuItem("帮助(H)", 'H'));jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_MASK));jmi.addActionListener(new help_h());help.add(jmi = new JMenuItem("关于(A)", 'A'));jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));jmi.addActionListener(new help_a());help.addSeparator();setLayout(new BorderLayout());file.setMnemonic('F');edit.setMnemonic('E');help.setMnemonic('H');jmb.add(file);jmb.add(edit);jmb.add(help);toolBar.setFloatable(true);add(jmb, BorderLayout.NORTH);add(toolBar, BorderLayout.CENTER);add(jsp, BorderLayout.SOUTH);jta.getCaret().setVisible(true);jta.setCaretPosition(0);}// 关闭窗口protected static final class appCloseL extends WindowAdapter {public void windowClosing(WindowEvent e) {System.exit(0);}}// 主函数,程序入口public static void main(String args[]) {JFrame f = new JFrame();JNotePadUI applet = new JNotePadUI();f.setTitle("写字板");f.setBackground(Color.lightGray);f.getContentPane().add(applet, BorderLayout.CENTER);f.addWindowListener(new appCloseL());f.setSize(800, 500);f.setLocation(500,170);f.setVisible(true);f.pack();f.setResizable(false);}
}

Java编程之图形化写字板相关推荐

  1. Java编程之图形化设计求任意输入数的阶乘

    问题描述:下面是我使用Java编程所实现的图形化的能求输入的任意数的阶乘. 程序源码: import java.awt.*; import java.awt.event.*; import javax ...

  2. Java编程思想 图形化用户界面总结

    设计中要遵循的一条基本原则是 让简单的事情变得容易 让困难的事情变得可行 applet 它是一种可以在Internet上传递 并在Web浏览器中运行的程序(出于安全性 只能在所谓的沙盒内运行) Swi ...

  3. python最简单的图形编程_图形化编程、Python、Java、C++到底哪个适合你?

    近两年,学习编程的热潮一波接一波,编程语言也是五花八门.盒子姐姐找到了一份2019年编程语言热度排行榜,其中,Java.C语言和Python高居榜首. 有些小伙伴就要问啦,编程语言这么多,区别在哪里呢 ...

  4. 电子学会 软件编程(图形化)二级训练营

    电子学会 软件编程(图形化)二级训练营 试题来源 青少年软件编程(Scratch)等级考试试卷(二级)[2019.09] 青少年软件编程(Scratch)等级考试试卷(二级)[2019.12] 青少年 ...

  5. 电子学会 软件编程(图形化)一级训练营

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 电子学会 软件编程(图形化)一级训练营 ...

  6. 2021.09 电子学会 - 软件编程(图形化)试题讲解

    软件编程(图形化)试题讲解 一级 考核目标 考查对软件编程界面的认识和基本操作:能够导入角色.背景和声音,通过对角色和背景进行简单操作,编写一个具有简单顺序结构的作品:同时考查简单的逻辑推理能力. 插 ...

  7. 电子学会2021年3月青少年软件编程(图形化)等级考试试卷(二级)答案解析

    目录 一.单选题(共25题,每题2分,共50分) 二.判断题(共10题,每题2分,共20分) 三.编程题(共2题,共30分) 青少年软件编程(图形化)等级考试试卷(二级) 分数:100.00      ...

  8. 竞赛练一练 第15期:电子学会2021年9月青少年软件编程(图形化)等级考试试卷(三级)...

    青少年软件编程(图形化)等级考试试卷(三级) 分数:100.00            题数:38 需要访问更多题库,可以成为我们永久会员,享受在线题库训练 一.单选题(共25题,每题2分,共50分) ...

  9. 2022.09 青少年软件编程(图形化) 等级考试试卷(四级)

    2022.09 青少年软件编程(图形化) 等级考试试卷(四级) 分数: 100 题数: 29 一. 单选题(共 15 题, 共 30 分) 1.运行下列程序,说法正确的是?() A.列表中的数字全部小 ...

最新文章

  1. bootstrap datatimepicker 汉化
  2. assign深拷贝_前端深拷贝和浅拷贝
  3. 中小企业私有云解决方案浅谈
  4. spark集群测试小案例
  5. Leetcode--1014. 最佳观光组合(java)
  6. 新基建带来新机遇!大数据产业发展需“四驱”推动
  7. 【Python】Python中常用的字符串处理函数
  8. urllib2:URLError与HTTPError
  9. 各层电子数排布规则_一文读懂PCB多层板各层含义与设计原则
  10. Android绑定服务后出现空指针异常问题
  11. 这辈子最难忘的一顿饭是什么?
  12. 【转】Android 最火框架XUtils之注解机制详解
  13. Golang服务端开发及微服务架构
  14. 商用平板 移动金融潜力巨大的应用平台
  15. JSON - Qt 对 JSON的处理
  16. nsis检测vc2013运行环境vcredist_x86.exe是否已经安装
  17. PDF打开不能打印什么原因呢
  18. 分享一个本人打造的公众号吸粉、推广方案。
  19. 1038: 绝对值最大
  20. stm32摄像头调试 | 串口传输照片数据 | 用python来设计上位机通信软件

热门文章

  1. Maven 打包报“java.lang.StackOverflowError”错解决办法
  2. nodejs开发辅助工具nodemon
  3. 放大器非线性失真研究装置 (E 题) --2020 年TI 杯大学生电子设计竞赛
  4. leetcode 57. 插入区间 58. 最后一个单词的长度
  5. ASP.NET(一)学习
  6. 回忆2012年在提高班的成长过程
  7. pyecharts数据可视化—雷达图、折线图、面积图
  8. Servlet应用——JavaWeb教案(四)
  9. spring boot +Mysql双端融合的教学过程管理系统小程序源码66431
  10. 值得推荐的几款免费在线甘特图工具【写本子的都说好!】