1、JDBC概述

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

主要常用操作类与接口:

java.sql.DriverManager 用于管理jdbc驱动程序

Java.sql.Connection 用于建立与特定数据库的连接

Java.sql.Statement 一个Statement的对象用于执行静态sql语句,并获得语句执行后产生的后果

Java.sql.PreparedStatement 创建一个可以编译的sql语句对象,该对象可以多次被运行,以提高执行效率,是Statement的子接口

Java.sql.ResultSet 用于创建表示sql语句检索结果的结果集,用户通过结果集完成对数据库的访问

2、JDBC操作步骤

(1)加载驱动

  1. public class Text {
  2. public static final String DBDRIVER="ora.gjt.mm.mysql.Driver";
  3. public static void main(String[] args) {
  4. try {
  5. Class.forName(DBDRIVER);
  6. } catch (ClassNotFoundException e) {
  7. e.printStackTrace();
  8. }
  9. }
  10. }

(2)连接数据库:使用DriverManager类连接数据库和Connection接口

  1. jdbc:mysql://IP地址:端口号/数据库名称

(3)通过Statement发送sql语句

通过Prepared Statement发送sql语句

(4)关闭数据库

3、MySQL数据库操作

数据库连接

mysql -u用户名 -p密码

数据库创建

创建数据库 CREATE DATABASE 数据库名称;

数据库删除 DROP DATABASE 数据库名称;

使用数据库

USE 数据库名称;

创建数据库表

  1. CREATE TABLE{
  2. 字段名称1 字段类型 [DEFAULT 默认值][约束]
  3. 字段名称2 字段类型 [DEFAULT 默认值][约束],
  4. ...,
  5. 字段名称n 字段类型 [DEFAULT 默认值][约束],

删除数据库表 DELETE FROM 表名称

更新 UPDATE 表名称

查询 SELECT{*lcolumn alias} FROM 表名称

记事本

  1. package lastwork;
  2. import java.awt.*;
  3. import java.awt.datatransfer.Clipboard;
  4. import java.awt.datatransfer.Transferable;
  5. import javax.swing.event.UndoableEditListener;
  6. import javax.swing.text.View;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9. import java.awt.event.InputEvent;
  10. import java.awt.event.KeyEvent;
  11. import java.awt.event.MouseAdapter;
  12. import java.awt.event.MouseEvent;
  13. import java.awt.event.MouseListener;
  14. import java.awt.event.WindowAdapter;
  15. import java.awt.event.WindowEvent;
  16. import java.io.BufferedReader;
  17. import java.io.BufferedWriter;
  18. import java.io.File;
  19. import java.io.FileInputStream;
  20. import java.io.FileNotFoundException;
  21. import java.io.FileOutputStream;
  22. import java.io.FileReader;
  23. import java.io.FileWriter;
  24. import java.io.IOException;
  25. import java.text.SimpleDateFormat;
  26. import java.util.Date;
  27. import javax.swing.*;
  28. import javax.swing.event.DocumentEvent;
  29. import javax.swing.event.DocumentListener;
  30. import javax.swing.event.ListSelectionEvent;
  31. import javax.swing.event.ListSelectionListener;
  32. import javax.swing.event.UndoableEditEvent;
  33. import javax.swing.event.UndoableEditListener;
  34. import javax.swing.undo.CannotUndoException;
  35. import javax.swing.undo.UndoManager;
  36. import org.w3c.dom.Text;
  37. import jdk.jshell.execution.Util;
  38. public class TextPad extends dialog implements ActionListener, DocumentListener{
  39. JFrame frame;
  40. JMenu fileMenu,editManu,formatMenu,checkMenu,helpMenu;
  41. JMenuBar bar;
  42. ImageIcon openicon,newicon,saveicon,saveanothericon,closeicon,linewrapicon;
  43. JMenuItem openitem,newitem,saveitem,saveanotheritem,closeitem,pageitem,pointitem;
  44. JMenuItem repealitem,cutitem,copyitem,stickitem,deleteitem,allitem,timedateitem,finditem,findnextitem,replaceitem,turnitem;
  45. JMenuItem prepealitem,pcutitem,pcopyitem,pstickitem,pdeleteitem,pallitem,ptimedateitem;
  46. JMenuItem linewrapitem,fontitem;
  47. JMenuItem checkhelpitem,aboutitem;
  48. JMenuItem stateitem;
  49. JTextArea area;
  50. JScrollPane scpane;
  51. JFileChooser chooser;
  52. File file;
  53. JButton bt;
  54. JPopupMenu pMenu;
  55. boolean i=false;
  56. boolean isNewFile=true;
  57. File currentFile;
  58. String oldValue;
  59. JLabel statusLabel;
  60. //系统剪贴板
  61. Toolkit toolkit=Toolkit.getDefaultToolkit();
  62. Clipboard clipBoard=toolkit.getSystemClipboard();
  63. //创建撤销操作管理器(与撤销操作有关)
  64. protected UndoManager undo=new UndoManager();
  65. protected UndoableEditListener undoHandler=new UndoHandler();
  66. public TextPad(){
  67. frame=new JFrame("记事本");
  68. bar=new JMenuBar();
  69. fileMenu=new JMenu("文件(F)");
  70. editManu=new JMenu("编辑(E)");
  71. formatMenu=new JMenu("格式(O)");
  72. checkMenu=new JMenu("查看(V)");
  73. helpMenu=new JMenu("帮助(H)");
  74. statusLabel=new JLabel(" 状态栏");
  75. frame.add(statusLabel,BorderLayout.SOUTH);
  76. area=new JTextArea();
  77. scpane=new JScrollPane(area);
  78. pMenu=new JPopupMenu();
  79. //图片导入路径
  80. newicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"new.png");
  81. openicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"open.png");
  82. saveicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"save.png");
  83. saveanothericon=new ImageIcon("d:"+File.separator+"111"+File.separator+"saveanother.png");
  84. closeicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"close.png");
  85. linewrapicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"d.png");
  86. //调用图片
  87. newitem=new JMenuItem("新建(N)",newicon);
  88. openitem=new JMenuItem("打开(O)",openicon);
  89. saveitem=new JMenuItem("保存(S)",saveicon);
  90. saveanotheritem=new JMenuItem("另存为(A)",saveanothericon);
  91. closeitem=new JMenuItem("关闭(X)",closeicon);
  92. pageitem=new JMenuItem("页面设置(U)");
  93. pointitem=new JMenuItem("打印(P)");
  94. repealitem=new JMenuItem("撤销(U)");
  95. cutitem=new JMenuItem("剪切(T)");
  96. copyitem=new JMenuItem("复制(C)");
  97. stickitem=new JMenuItem("粘贴(V)");
  98. deleteitem=new JMenuItem("删除(L)");
  99. finditem=new JMenuItem("查找(F)");
  100. findnextitem=new JMenuItem("查找下一个(FN)");
  101. replaceitem=new JMenuItem("替换(H)");
  102. turnitem=new JMenuItem("转到(G)");
  103. allitem=new JMenuItem("全选(A)");
  104. timedateitem=new JMenuItem("时间/日期(D)");
  105. linewrapitem=new JMenuItem("自动换行(W)",linewrapicon);
  106. fontitem=new JMenuItem("字体(F)");
  107. stateitem=new JMenuItem("状态栏(S)");
  108. checkhelpitem=new JMenuItem("查看帮助(H)");
  109. aboutitem=new JMenuItem("关于(A)");
  110. //添加为菜单项
  111. fileMenu.add(newitem);
  112. fileMenu.add(openitem);
  113. fileMenu.add(saveitem);
  114. fileMenu.add(saveanotheritem);
  115. fileMenu.addSeparator();
  116. fileMenu.add(pageitem);
  117. fileMenu.add(pointitem);
  118. fileMenu.addSeparator();
  119. fileMenu.add(closeitem);
  120. editManu.add(repealitem);
  121. editManu.addSeparator();
  122. editManu.add(cutitem);
  123. editManu.add(copyitem);
  124. editManu.add(stickitem);
  125. editManu.add(deleteitem);
  126. editManu.addSeparator();
  127. editManu.add(finditem);
  128. editManu.add(findnextitem);
  129. editManu.add(replaceitem);
  130. editManu.add(turnitem);
  131. editManu.addSeparator();
  132. editManu.add(allitem);
  133. editManu.add(timedateitem);
  134. repealitem.setEnabled(false);
  135. cutitem.setEnabled(false);
  136. copyitem.setEnabled(false);
  137. deleteitem.setEnabled(false);
  138. formatMenu.add(linewrapitem);
  139. formatMenu.add(fontitem);
  140. checkMenu.add(stateitem);
  141. helpMenu.add(checkhelpitem);
  142. helpMenu.add(aboutitem);
  143. prepealitem=new JMenuItem("撤销(U)");
  144. pcutitem=new JMenuItem("剪切(T)");
  145. pcopyitem=new JMenuItem("复制(C)");
  146. pstickitem=new JMenuItem("粘帖(P)");
  147. pdeleteitem=new JMenuItem("删除(D)");
  148. pallitem=new JMenuItem("全选(A)");
  149. ptimedateitem=new JMenuItem("时间/日期(D)");
  150. prepealitem.setEnabled(false);
  151. pMenu.add(prepealitem);
  152. pMenu.addSeparator();
  153. pMenu.add(pcutitem);
  154. pMenu.add(pcopyitem);
  155. pMenu.add(pstickitem);
  156. pMenu.add(pdeleteitem);
  157. pMenu.add(pallitem);
  158. pMenu.add(ptimedateitem);
  159. //设置快捷键和提示信息
  160. newitem.setMnemonic(KeyEvent.VK_N);
  161. newitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK));
  162. openitem.setMnemonic(KeyEvent.VK_O);
  163. openitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_DOWN_MASK));
  164. saveitem.setMnemonic(KeyEvent.VK_S);
  165. saveitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_DOWN_MASK));
  166. saveanotheritem.setMnemonic(KeyEvent.VK_A);
  167. saveanotheritem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
  168. closeitem.setMnemonic(KeyEvent.VK_X);
  169. closeitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));
  170. pageitem.setMnemonic(KeyEvent.VK_U);
  171. pointitem.setMnemonic(KeyEvent.VK_P);
  172. pointitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_DOWN_MASK));
  173. repealitem.setMnemonic(KeyEvent.VK_Z);
  174. repealitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_DOWN_MASK));
  175. cutitem.setMnemonic(KeyEvent.VK_T);
  176. cutitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_DOWN_MASK));
  177. copyitem.setMnemonic(KeyEvent.VK_C);
  178. copyitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_DOWN_MASK));
  179. stickitem.setMnemonic(KeyEvent.VK_V);
  180. stickitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_DOWN_MASK));
  181. deleteitem.setMnemonic(KeyEvent.VK_L);
  182. deleteitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_DOWN_MASK));
  183. allitem.setMnemonic(KeyEvent.VK_A);
  184. allitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
  185. timedateitem.setMnemonic(KeyEvent.VK_D);
  186. timedateitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_DOWN_MASK));
  187. finditem.setMnemonic(KeyEvent.VK_F);
  188. finditem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_DOWN_MASK));
  189. findnextitem.setMnemonic(KeyEvent.VK_L);
  190. findnextitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_DOWN_MASK));
  191. replaceitem.setMnemonic(KeyEvent.VK_H);
  192. replaceitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_DOWN_MASK));
  193. turnitem.setMnemonic(KeyEvent.VK_G);
  194. turnitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_DOWN_MASK));
  195. prepealitem.setMnemonic(KeyEvent.VK_Z);
  196. prepealitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_DOWN_MASK));
  197. pcutitem.setMnemonic(KeyEvent.VK_T);
  198. pcutitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_DOWN_MASK));
  199. pcopyitem.setMnemonic(KeyEvent.VK_C);
  200. pcopyitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_DOWN_MASK));
  201. pstickitem.setMnemonic(KeyEvent.VK_V);
  202. pstickitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_DOWN_MASK));
  203. pdeleteitem.setMnemonic(KeyEvent.VK_L);
  204. pdeleteitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_DOWN_MASK));
  205. pallitem.setMnemonic(KeyEvent.VK_A);
  206. pallitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
  207. ptimedateitem.setMnemonic(KeyEvent.VK_D);
  208. ptimedateitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_DOWN_MASK));
  209. linewrapitem.setMnemonic(KeyEvent.VK_W);
  210. fontitem.setMnemonic(KeyEvent.VK_F);
  211. stateitem.setMnemonic(KeyEvent.VK_S);
  212. checkhelpitem.setMnemonic(KeyEvent.VK_H);
  213. aboutitem.setMnemonic(KeyEvent.VK_A);
  214. //添加事件监听器
  215. newitem.addActionListener(this);
  216. openitem.addActionListener(this);
  217. saveitem.addActionListener(this);
  218. saveanotheritem.addActionListener(this);
  219. closeitem.addActionListener(this);
  220. pageitem.addActionListener(this);
  221. pointitem.addActionListener(this);
  222. repealitem.addActionListener(this);
  223. cutitem.addActionListener(this);
  224. copyitem.addActionListener(this);
  225. stickitem.addActionListener(this);
  226. deleteitem.addActionListener(this);
  227. allitem.addActionListener(this);
  228. timedateitem.addActionListener(this);
  229. finditem.addActionListener(this);
  230. findnextitem.addActionListener(this);
  231. replaceitem.addActionListener(this);
  232. turnitem.addActionListener(this);
  233. linewrapitem.addActionListener(this);
  234. fontitem.addActionListener(this);
  235. stateitem.addActionListener(this);
  236. checkhelpitem.addActionListener(this);
  237. aboutitem.addActionListener(this);
  238. area.addMouseListener(new MouseAdapter()
  239. { public void mousePressed(MouseEvent e){
  240. if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件
  241. { pMenu.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单
  242. }
  243. checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性
  244. area.requestFocus();//编辑区获取焦点
  245. }
  246. public void mouseReleased(MouseEvent e)
  247. { if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件
  248. { pMenu.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单
  249. }
  250. checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性
  251. area.requestFocus();//编辑区获取焦点
  252. }
  253. });
  254. prepealitem.addActionListener(this);
  255. pcutitem.addActionListener(this);
  256. pcopyitem.addActionListener(this);
  257. pstickitem.addActionListener(this);
  258. pdeleteitem.addActionListener(this);
  259. pallitem.addActionListener(this);
  260. ptimedateitem.addActionListener(this);
  261. //编辑区注册事件监听(与撤销操作有关)
  262. area.getDocument().addUndoableEditListener(undoHandler);
  263. area.getDocument().addDocumentListener(this);
  264. //添加主菜单项
  265. bar.add(fileMenu);
  266. bar.add(editManu);
  267. bar.add(formatMenu);
  268. bar.add(checkMenu);
  269. bar.add(helpMenu);
  270. //添加面板及显示
  271. frame.add(scpane);
  272. frame.setJMenuBar(bar);
  273. frame.setSize(800, 550);
  274. frame.setLocation(400, 200);
  275. frame.setVisible(true);
  276. frame.addWindowListener(new WindowAdapter() {
  277. public void windowClosing(WindowEvent arg0) {
  278. System.exit(1);
  279. }
  280. });
  281. }
  282. @Override
  283. public void actionPerformed(ActionEvent e) {
  284. Object obj=e.getSource();
  285. if(obj instanceof JMenuItem) {
  286. JMenuItem item=(JMenuItem)obj;
  287. if(item==newitem) {
  288. new TextPad();
  289. }else if(item==openitem) {
  290. chooser=new JFileChooser();
  291. chooser.showOpenDialog(null);
  292. file=chooser.getSelectedFile();
  293. try {
  294. FileInputStream fis=new FileInputStream(file);
  295. byte[] b;
  296. try {
  297. b = new byte[fis.available()];
  298. fis.read(b);
  299. area.append(new String(b));
  300. fis.close();
  301. } catch (IOException e1) {
  302. e1.printStackTrace();
  303. }
  304. } catch (FileNotFoundException e1) {
  305. e1.printStackTrace();
  306. }
  307. }else if(item==saveanotheritem) {
  308. chooser=new JFileChooser();
  309. chooser.showSaveDialog(null);
  310. file=chooser.getSelectedFile();
  311. try {
  312. if(!file.exists()) {
  313. file.createNewFile();
  314. }
  315. FileOutputStream fos=new FileOutputStream(file);
  316. byte[] b=area.getText().getBytes();
  317. fos.write(b);
  318. fos.close();
  319. } catch (IOException e1) {
  320. e1.printStackTrace();
  321. }
  322. }else if(item==saveitem) {
  323. file=chooser.getSelectedFile();
  324. try {
  325. FileOutputStream fos=new FileOutputStream(file);
  326. byte[] b=area.getText().getBytes();
  327. fos.write(b);
  328. fos.close();
  329. } catch (FileNotFoundException e1) {
  330. e1.printStackTrace();
  331. } catch (IOException e1) {
  332. e1.printStackTrace();
  333. }
  334. }else if(item==closeitem) {
  335. //System.exit(1);
  336. int exitChoose=JOptionPane.showConfirmDialog(this,"确定要退出吗?","退出提示",JOptionPane.OK_CANCEL_OPTION);
  337. if(exitChoose==JOptionPane.OK_OPTION){
  338. System.exit(0);
  339. }else{
  340. return;
  341. }
  342. }else if(item==cutitem||item==pcutitem) {
  343. area.cut();
  344. }else if(item==copyitem||item==pcopyitem) {
  345. area.copy();
  346. }else if(item==stickitem||item==pstickitem) {
  347. area.paste();
  348. }else if(item==allitem||item==pallitem) {
  349. area.selectAll();
  350. }else if(item==deleteitem||item==pdeleteitem) {
  351. String temp = area.getSelectedText();//获得鼠标拖动选取的文本
  352. int start = area.getSelectionStart();
  353. int end = area.getSelectionEnd();
  354. area.replaceRange("",start,end);//选中的区域用""替换
  355. }else if(item==repealitem||item==prepealitem) {
  356. if(e.getSource()==repealitem || e.getSource()==prepealitem){
  357. area.requestFocus();
  358. if(undo.canUndo()){
  359. try{
  360. undo.undo();
  361. }catch (CannotUndoException ex){
  362. System.out.println("Unable to undo:" + ex);
  363. //ex.printStackTrace();
  364. }
  365. }
  366. if(!undo.canUndo()){
  367. repealitem.setEnabled(false);
  368. prepealitem.setEnabled(false);
  369. }
  370. }
  371. }else if(item==timedateitem||item==ptimedateitem) {
  372. Date d = new Date();
  373. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  374. String dateNewStr=sdf.format(d);
  375. area.append(dateNewStr);
  376. }else if(item==pageitem) {
  377. area.requestFocus();
  378. JOptionPane.showMessageDialog(this,"对不起,此功能尚未实现!","提示",JOptionPane.WARNING_MESSAGE);
  379. }else if(item==pointitem) {
  380. area.requestFocus();
  381. JOptionPane.showMessageDialog(this,"对不起,此功能尚未实现!","提示",JOptionPane.WARNING_MESSAGE);
  382. }else if(item==finditem) {
  383. }else if(item==findnextitem) {
  384. }else if(item==replaceitem) {
  385. }else if(item==turnitem) {
  386. }
  387. else if(item==linewrapitem) {
  388. if(!i) {
  389. area.setLineWrap(true);
  390. // area.setWrapStyleWord(true);
  391. i=true;
  392. }else {
  393. area.setLineWrap(false);
  394. // area.setWrapStyleWord(false);
  395. i=false;
  396. }
  397. }else if(item==fontitem) {
  398. area.requestFocus();
  399. font();
  400. }else if(item==stateitem) {
  401. if(!i) {
  402. statusLabel.setVisible(false);
  403. i=true;
  404. }else {
  405. statusLabel.setVisible(true);
  406. i=false;
  407. }
  408. }else if(item==checkhelpitem) {
  409. area.requestFocus();
  410. JOptionPane.showMessageDialog(this,"请自行百度","帮助主题",JOptionPane.INFORMATION_MESSAGE);
  411. }else if(item==aboutitem) {
  412. area.requestFocus();
  413. JOptionPane.showMessageDialog(this,
  414. "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n"+
  415. " 编写者:张文龙 \n"+
  416. " 编写时间:2019年11月 \n"+
  417. " qq:908866340 \n"+
  418. " 一些地方借鉴他人 \n"+
  419. "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n",
  420. "记事本",JOptionPane.INFORMATION_MESSAGE);
  421. }
  422. }
  423. }
  424. private void checkMenuItemEnabled() {
  425. String selectText=area.getSelectedText();
  426. if(selectText==null){
  427. cutitem.setEnabled(false);
  428. pcutitem.setEnabled(false);
  429. copyitem.setEnabled(false);
  430. pcopyitem.setEnabled(false);
  431. deleteitem.setEnabled(false);
  432. pdeleteitem.setEnabled(false);
  433. }else{
  434. cutitem.setEnabled(true);
  435. pcutitem.setEnabled(true);
  436. copyitem.setEnabled(true);
  437. pcopyitem.setEnabled(true);
  438. deleteitem.setEnabled(true);
  439. pdeleteitem.setEnabled(true);
  440. }
  441. //粘帖功能可用性判断
  442. Transferable contents=clipBoard.getContents(this);
  443. if(contents==null){
  444. stickitem.setEnabled(false);
  445. pstickitem.setEnabled(false);
  446. }else{
  447. stickitem.setEnabled(true);
  448. pstickitem.setEnabled(true);
  449. }
  450. }
  451. class UndoHandler implements UndoableEditListener{
  452. public void undoableEditHappened(UndoableEditEvent uee){
  453. undo.addEdit(uee.getEdit());
  454. }
  455. }
  456. public void font(){
  457. final JDialog fontDialog=new JDialog(this,"字体设置",false);
  458. Container con=fontDialog.getContentPane();
  459. con.setLayout(new FlowLayout(FlowLayout.LEFT));
  460. JLabel fontLabel=new JLabel("字体(F):");
  461. fontLabel.setPreferredSize(new Dimension(100,20));//构造一个Dimension,并将其初始化为指定宽度和高度
  462. JLabel styleLabel=new JLabel("字形(Y):");
  463. styleLabel.setPreferredSize(new Dimension(100,20));
  464. JLabel sizeLabel=new JLabel("大小(S):");
  465. sizeLabel.setPreferredSize(new Dimension(100,20));
  466. final JLabel sample=new JLabel("张文龙的记事本");
  467. final JTextField fontText=new JTextField(9);
  468. fontText.setPreferredSize(new Dimension(200,20));
  469. final JTextField styleText=new JTextField(8);
  470. styleText.setPreferredSize(new Dimension(200,20));
  471. final int style[]={Font.PLAIN,Font.BOLD,Font.ITALIC,Font.BOLD+Font.ITALIC};
  472. final JTextField sizeText=new JTextField(5);
  473. sizeText.setPreferredSize(new Dimension(200,20));
  474. JButton okButton=new JButton("确定");
  475. JButton cancel=new JButton("取消");
  476. cancel.addActionListener(new ActionListener(){
  477. public void actionPerformed(ActionEvent e){
  478. fontDialog.dispose();
  479. }
  480. });
  481. Font currentFont=area.getFont();
  482. fontText.setText(currentFont.getFontName());
  483. fontText.selectAll();
  484. if(currentFont.getStyle()==Font.PLAIN){
  485. styleText.setText("常规");
  486. }
  487. else if(currentFont.getStyle()==Font.BOLD){
  488. styleText.setText("粗体");
  489. }
  490. else if(currentFont.getStyle()==Font.ITALIC){
  491. styleText.setText("斜体");
  492. }
  493. else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC)){
  494. styleText.setText("粗斜体");
  495. }
  496. styleText.selectAll();
  497. String str=String.valueOf(currentFont.getSize());
  498. sizeText.setText(str);
  499. sizeText.selectAll();
  500. final JList fontList,styleList,sizeList;
  501. GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
  502. final String fontName[]=ge.getAvailableFontFamilyNames();
  503. fontList=new JList(fontName);
  504. fontList.setFixedCellWidth(86);
  505. fontList.setFixedCellHeight(20);
  506. fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  507. final String fontStyle[]={"常规","粗体","斜体","粗斜体"};
  508. styleList=new JList(fontStyle);
  509. styleList.setFixedCellWidth(86);
  510. styleList.setFixedCellHeight(20);
  511. styleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  512. if(currentFont.getStyle()==Font.PLAIN){
  513. styleList.setSelectedIndex(0);
  514. }
  515. else if(currentFont.getStyle()==Font.BOLD){
  516. styleList.setSelectedIndex(1);
  517. }
  518. else if(currentFont.getStyle()==Font.ITALIC){
  519. styleList.setSelectedIndex(2);
  520. }
  521. else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC)){
  522. styleList.setSelectedIndex(3);
  523. }
  524. final String fontSize[]={"8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72"};
  525. sizeList=new JList(fontSize);
  526. sizeList.setFixedCellWidth(43);
  527. sizeList.setFixedCellHeight(20);
  528. sizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  529. fontList.addListSelectionListener(new ListSelectionListener(){
  530. public void valueChanged(ListSelectionEvent event){
  531. fontText.setText(fontName[fontList.getSelectedIndex()]);
  532. fontText.selectAll();
  533. Font sampleFont1=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
  534. sample.setFont(sampleFont1);
  535. }
  536. });
  537. styleList.addListSelectionListener(new ListSelectionListener(){
  538. public void valueChanged(ListSelectionEvent event){
  539. int s=style[styleList.getSelectedIndex()];
  540. styleText.setText(fontStyle[s]);
  541. styleText.selectAll();
  542. Font sampleFont2=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
  543. sample.setFont(sampleFont2);
  544. }
  545. });
  546. sizeList.addListSelectionListener(new ListSelectionListener(){
  547. public void valueChanged(ListSelectionEvent event){
  548. sizeText.setText(fontSize[sizeList.getSelectedIndex()]);
  549. //sizeText.requestFocus();
  550. sizeText.selectAll();
  551. Font sampleFont3=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
  552. sample.setFont(sampleFont3);
  553. }
  554. });
  555. okButton.addActionListener(new ActionListener(){
  556. public void actionPerformed(ActionEvent e){
  557. Font okFont=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
  558. area.setFont(okFont);
  559. fontDialog.dispose();
  560. }
  561. });
  562. JPanel samplePanel=new JPanel();
  563. samplePanel.setBorder(BorderFactory.createTitledBorder("示例"));
  564. samplePanel.add(sample);
  565. JPanel panel1=new JPanel();
  566. JPanel panel2=new JPanel();
  567. JPanel panel3=new JPanel();
  568. panel2.add(fontText);
  569. panel2.add(styleText);
  570. panel2.add(sizeText);
  571. panel2.add(okButton);
  572. panel3.add(new JScrollPane(fontList));//JList不支持直接滚动,所以要让JList作为JScrollPane的视口视图
  573. panel3.add(new JScrollPane(styleList));
  574. panel3.add(new JScrollPane(sizeList));
  575. panel3.add(cancel);
  576. con.add(panel1);
  577. con.add(panel2);
  578. con.add(panel3);
  579. con.add(samplePanel);
  580. fontDialog.setSize(350,340);
  581. fontDialog.setLocation(200,200);
  582. fontDialog.setResizable(false);
  583. fontDialog.setVisible(true);
  584. }
  585. public void insertUpdate(DocumentEvent e) {
  586. repealitem.setEnabled(true);
  587. prepealitem.setEnabled(true);
  588. }
  589. public void removeUpdate(DocumentEvent e) {
  590. repealitem.setEnabled(true);
  591. prepealitem.setEnabled(true);
  592. }
  593. public void changedUpdate(DocumentEvent e) {
  594. repealitem.setEnabled(true);
  595. prepealitem.setEnabled(true);
  596. }
  597. }

运行截图

第十四周课程总结&实验报告(简单记事本的实现)的更多相关文章

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

    简单记事本的实现 实验源码 主类 package test1; import javax.swing.JFrame; import javax.swing.JTextArea; public clas ...

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

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

  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. Pycharm+Selenium webdriverPython自动化测试

    这是关于软件测试的一个作业! 1.Pycharm下载,这里可以自己去官网下载即可:https://www.jetbrains.com/pycharm/download/#section=windows ...

  2. JavaWeb-用过滤器修改请求的返回状态码

    问题: 客户SDK对接服务,默认只识别200和非200的请求状态码.需要修改当前应用的状态码(如将201转为200) 解决方案:通过扩展HttpServletResponseWrapper,获取到每个 ...

  3. web开发中的Cookie与Session技术

    Cookie Cookie的由来 HTTP协议是无状态的,无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后 ...

  4. ADF简单介绍

    1.ADF也是用的MVC的分层模式,如下图所示 2.Model层代理数据服务将数据关联在View层,用户则是在View层的UI界面上的操作来更改Model层代理的数据,Controller控制层执行用 ...

  5. Android SQLiteDatabase的使用

    package com.shawn.test; import android.content.ContentValues; import android.content.Context; import ...

  6. 使用nodejs对Marketing Cloud的contact主数据进行修改操作

    假设在Marketing Cloud有这样一个contact主数据: 现在需求是使用编程语言比如nodejs修改这个contact实例的高亮属性. 代码如下: var config = require ...

  7. 处理器拦截器(HandlerInterceptor)详解(转)

    简介 SpringWebMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于处理器进行预处理和后处理. 应用场景 1.日志记录,可以记录请求信息的日志,以便进行信息监控.信息统计 ...

  8. 7.SpringMVC 配置式开发-ModelAndView和视图解析器

    ModelAndView 1.Model(模型) 1.model的本质就是HashMap,向模型中添加数据,就是往HashMap中去添加数据 2.HashMap 是一个单向查找数组,单向链表数组 3. ...

  9. Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config

    在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config,它支持配 ...

  10. C#读取某一文件夹下的所有文件夹和文件

    static List<string> list = new List<string>();//定义list变量,存放获取到的路径 /// <summary> // ...