简单记事本的实现

实验源码

主类

package test1;

import javax.swing.JFrame;
import javax.swing.JTextArea; public class WordPAD { public static void main(String[] args) {
new Note();
}
}

Note类

package test1;

import javax.swing.*;
import javax.swing.undo.UndoManager; import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.Scanner;
public class Note {
JFrame frame;
JTextArea area;
JMenu jmenu,jmeun1;
JMenuBar bar;
JScrollPane scr;
JMenuItem newItem,openItem,saveItem,closeItem;
JMenuItem cx,jq,fz,zt,sc;
JPanel butpan=new JPanel();
int result=0;
UndoManager um;
byte b[];
InputStream input;
OutputStream out; public Note() {
frame=new JFrame("L L");
area=new JTextArea(30,40);
jmenu=new JMenu("文件");
jmeun1=new JMenu("编辑");
jmenu.setIcon(new ImageIcon("C:\\Users\\26404\\Desktop\\1.PNG"));
jmenu.addSeparator();
bar=new JMenuBar();
scr=new JScrollPane(area,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
newItem=new JMenuItem("新建(N)",new ImageIcon("C:\\Users\\26404\\Desktop\\2.PNG"));
openItem=new JMenuItem("打开(O)",new ImageIcon("C:\\Users\\26404\\Desktop\\3.PNG"));
saveItem=new JMenuItem("另存为(A)",new ImageIcon("C:\\Users\\26404\\Desktop\\5.PNG"));
closeItem=new JMenuItem("关闭(X)",new ImageIcon("C:\\Users\\26404\\Desktop\\4.PNG"));
cx=new JMenuItem("撤销(U)");
jq=new JMenuItem("剪切(T)");
fz=new JMenuItem("复制(C)");
zt=new JMenuItem("粘贴(P)");
sc=new JMenuItem("删除(L)");
newItem.setMnemonic(KeyEvent.VK_N);
openItem.setMnemonic(KeyEvent.VK_O);
saveItem.setMnemonic(KeyEvent.VK_A);
closeItem.setMnemonic(KeyEvent.VK_X);
newItem.setAccelerator(KeyStroke.getKeyStroke('N', java.awt.Event.CTRL_MASK));
openItem.setAccelerator(KeyStroke.getKeyStroke('O', java.awt.Event.CTRL_MASK));
saveItem.setAccelerator(KeyStroke.getKeyStroke('A', java.awt.Event.CTRL_MASK));
closeItem.setAccelerator(KeyStroke.getKeyStroke('X', java.awt.Event.CTRL_MASK));
cx.setMnemonic(KeyEvent.VK_U);
jq.setMnemonic(KeyEvent.VK_T);
fz.setMnemonic(KeyEvent.VK_C);
zt.setMnemonic(KeyEvent.VK_P);
sc.setMnemonic(KeyEvent.VK_L);
cx.setAccelerator(KeyStroke.getKeyStroke('Z', java.awt.Event.CTRL_MASK));
jq.setAccelerator(KeyStroke.getKeyStroke('X', java.awt.Event.CTRL_MASK));
fz.setAccelerator(KeyStroke.getKeyStroke('C', java.awt.Event.CTRL_MASK));
zt.setAccelerator(KeyStroke.getKeyStroke('V', java.awt.Event.CTRL_MASK));
sc.setAccelerator(KeyStroke.getKeyStroke("Del")); jmenu.add(newItem);
jmenu.add(openItem);
jmenu.add(saveItem);
jmenu.add(closeItem);
jmeun1.add(cx);
jmeun1.add(jq);
jmeun1.add(fz);
jmeun1.add(zt);
jmeun1.add(sc); bar.add(jmenu);
bar.add(jmeun1);
frame.add(scr);
frame.setJMenuBar(bar); newItem.addActionListener(new ActionListener() {//新建
public void actionPerformed(ActionEvent e) {
if(e.getSource()==newItem)
new Note();
}
}); JFileChooser chooser=new JFileChooser();
openItem.addActionListener(new ActionListener() {//打开
public void actionPerformed(ActionEvent e) {
File file=null;
if(e.getSource()==openItem) {
area.setText("");
chooser.showOpenDialog(frame);
file=chooser.getSelectedFile();
if(file!=null) {
try {
Scanner scan=new Scanner(new FileInputStream(file));
scan.useDelimiter("\n");
while(scan.hasNext()) {
area.append(scan.next ());
area.append("\n");
}
scan.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
}
}
}); saveItem.addActionListener(new ActionListener() {//另存为
public void actionPerformed(ActionEvent e) {
File file;
chooser.showSaveDialog(frame);
file=chooser.getSelectedFile();
if(!file.exists()) {
JOptionPane.showMessageDialog(null, "创建文件"+file.getName());
try {
file.createNewFile();
} catch (IOException e1) {
e1.printStackTrace();
}
}
try {
PrintStream out=new PrintStream(new FileOutputStream(file));
out.print(area.getText());
out.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
}); closeItem.addActionListener(new ActionListener() {//关闭
public void actionPerformed(ActionEvent e) {
if(e.getSource()==closeItem)
System.exit(1);
}
}); cx.addActionListener(new ActionListener() {//撤销
public void actionPerformed(ActionEvent e) {
um=new UndoManager();
if(e.getSource()==cx)
if (um.canUndo())
{
um.undo();
}
}
}); zt.addActionListener(new ActionListener() {//粘贴
public void actionPerformed(ActionEvent e) {
if(e.getSource()==zt) {
area.paste();
}
}
}); fz.addActionListener(new ActionListener() {//复制
public void actionPerformed(ActionEvent e) {
if(e.getSource()==fz)
area.copy();
}
}); jq.addActionListener(new ActionListener() {//剪切
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jq)
area.cut();
}
}); sc.addActionListener(new ActionListener() {//删除
public void actionPerformed(ActionEvent e) {
if(e.getSource()==sc)
{
String str=area.getSelectedText();
String newStr = area.getText().replace(str, "");
area.setText(newStr);
}
}
}); frame.setLocation(350, 184);
frame.setSize(600,400);
frame.setVisible(true);
area.setEditable(true);
}
}

实验结果





这段代码的撤销功能还没实现,其余的像复制、粘贴、剪切都实现了,其实也不难,直接调用相应的方法。

JDBC

JDBC是Java提供的一套数据库操作标准。JDBC提供了一种与平台无关的用于执行SQL语言的标准java API,可以方便地实现多种关系型数据库地统一操作。

MySQL数据库

MySQL常用命令

1.连接MySQL数据库

mysql-u用户名-p密码

2.创建数据库

创建数据库:CREATE DATABASE 数据库名称;
删除数据库:DROP DATABSE 数据库库名称;

3.使用数据库

USE 数据库名称;

4.创建数据库表

CREATE TABLE 表名称(
字段名称1 字段类型 [DEFAULT 默认值][约束],
字段名称2 字段类型 [DEFAULT 默认值][约束],
·····,
字段名称n 字段类型 [DEFAULT 默认值][约束],
);

5.删除数据库表

DROP TABLE 表名称;

6.查看表结构

DESC 表名称;

7.查看数据库信息

查看全部数据库:SHOW DATABASES;
看一个数据库的全部表:SHOW TABLES;

MySQL中的数据类型





增加数据

INSERT INTO 表名称[(字段1,字段2,字段3,····字段n)]VALUSE(值1,值2,值3···值n);

删除数据

DELETE FROM [删除条件];

更新数据

UPDATE 表名称 SET 字段1=值1,···字段n=值1[WHERE 更新条件];

查询数据

简单查询语句

SELECT{*|column alias}
FROM 表名称 别名
[WHERE condition(s)];

查询全部数据

SELSCT *FROM user;

Connection接口的常用方法



第十四周课程总结&实验报告的更多相关文章

  1. 第十四周课程总结 & 实验报告

    一.JDBC JDBC概述 JDBC提供了一种与平台无关的用于执行SQL语句的标准JavaAPI,可以方便的实现多种关系型数据库的统一操作,它由一组用Java语言编写的类和接口组成 JDBC的主要操作 ...

  2. 第十四周课程总结&实验报告(简单记事本的实现)

    1.JDBC概述 JDBC提供了一种与平台无关的用于执行SQL语句的标准JavaAPI,可以方便的实现多种关系型数据库的统一操作,它由一组用Java语言编写的类和接口组成 主要常用操作类与接口: ja ...

  3. 第四周课程总结&实验报告(二)

    Java实验报告(二) 实验二 Java简单类与对象 一. 实验目的 (1) 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握用类作为类型声明变量和方法返回值: (2) 理解类和对象的区别,掌握构造 ...

  4. 第四周课程总结&实验报告二

    第四周课程总结 第四周课程总结 本周重点为学习String;首先String用以创建字符串,且通过有一次课堂练习加强理解到:String 类是不可改变的,一旦创建了 String 对象,那它的值就无法 ...

  5. 第四周课程总结&实验报告

    实验报告 1.写一个名为Rectangle的类表示矩形. 其属性包括宽width.高height和颜色color,width和height都是double型的,而color则是String类型的.要求 ...

  6. 第十四周课程总结&&实验总结

    课程总结: 1.Java实现跨平台操作的工具:JDBC. 它的意思是java数据库连接,可以方便的实现多种关系型数据库的统一操作,它由一组用java语句编写的类和接口组成. 2.JDBC驱动分类: J ...

  7. 第三周课程总结&实验报告

    课程总结 在这周对Java进行了更深层次的学习,Java的学习也变得越来越困难而有趣,加入了一些新的构造新的方法,还学习了一些简化代码的方式. 面向对象的基本概念 对于面向对象的程序设计有三个主要特征 ...

  8. Java第三周课程总结&实验报告一

    第三周课程总结 1.关于面向对象的一些具体内容,明白了类与对象以及Java的封装性和构造方法以及对对象匿名的相关知识. 2.this关键字,它是表示类的成员属性(变量),使用this构造方法时必须放在 ...

  9. 第六周课程总结&实验报告(四)

    实验报告(四) 一.实验目的 1.掌握类的继承 2.变量的继承和覆盖,方法的继承,重载和覆盖的实现 二.实验的内容 1.根据下面的要求实现圆类Circle. 圆类Circle的成员变量:radius表 ...

随机推荐

  1. Python一等函数

    一等对象 一等对象的定义: (1)在运行时创建 (2)能赋值给变量或数据结构中的元素 (3)能作为参数传给函数 (4)能作为函数的返回结果 ▲ Python中,整数.字符串和字典.函数都是一等对象. ...

  2. learning armbian steps(6) ----- armbian 源码分析(一)

    为了深入学习armbian,前面已经学习了如何手动构建arm ubuntu rootfs. 由于armbian官方的文档比较的匮乏,所以最终还是决定通过其编译的过程来深入地学习. 为了快速度深入地学习 ...

  3. CentOS重新安装yum

    1.问题描述    有时会出现yum不可用的错误,可以先卸载再重装. 2.操作步骤 (1).下载Python-iniparse-0.4 -9.el7.noarch.rpm (2).下载yum-3.4. ...

  4. [Luogu] 排序机械臂

    https://www.luogu.org/problemnew/solution/P3165 预处理 我们会发现一个问题:高度是无序的,而splay中要求有序,否则kth不能正确求解.不需要求高度, ...

  5. 2019CCPC秦皇岛自我反省&部分题解

    练了一年半了,第一次打CCPC,险些把队友坑了打铁,最后也是3题危险捡了块铜. 非常水的点双连通,我居然不相信自己去相信板子,唉,结果整来整去,本来半个小时能出的题,整到了3个小时,大失误呀,不然就可 ...

  6. ubuntu彻底卸载mysql并且重新安装

    环境: root@ubuntu:/usr/local/mysql/data# uname -a Linux ubuntu 4.4.0-87-generic #110-Ubuntu SMP Tue Ju ...

  7. ios端浏览器拍照上传到服务器,图片被旋转90度 php 解决方案

    1.可以通过前端进行解决,本案例通过后端解决的 判断请求的浏览器的ua,如果是ios浏览器则进行90度旋转 重点来了: 必须确保检测的图片是ios设备上传的完整图片,不要在前端压缩过的,因为压缩后的图 ...

  8. Oracle中将密码有效期由默认的180天修改成“无限制”

    将密码有效期由默认的180天修改成“无限制”: 在系统管理员下执行如下语句即可 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED 修改之 ...

  9. chattr +i 锁定文件

    reboot machine, 查看DNS服务器配置文件\etc\resolv.conf, 里面的内容变回原来的样子. 原因是resolv.conf文件被系统程序自动维护.为了防止该文件被跟改,可以为 ...

  10. 使用 PM2 将 Node.js 的集群变得更加容易

    介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...