新知识点

1.撤销

textArea添加一个实现监听接口的类(添加了之后可以一直监视着添加的删除的情况,以便来撤销

  1. textArea.getDocument().addUndoableEditListener(
  2. new UndoableEditListener() {
  3. public void undoableEditHappened(UndoableEditEvent e) {
  4. undoManager.addEdit(e.getEdit());
  5. updateButtons();
  6. }
  7. });

再弄一个管理监听的类,可以撤销和恢复

UndoManager undoManager = new UndoManager();

  1. undoButton.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. try {
  4. undoManager.undo();
  5. } catch (CannotRedoException cre) {
  6. cre.printStackTrace();
  7. }
  8. updateButtons();
  9. }
  10. });
  11.  
  12. redoButton.addActionListener(new ActionListener() {
  13. public void actionPerformed(ActionEvent e) {
  14. try {
  15. undoManager.redo();
  16. } catch (CannotRedoException cre) {
  17. cre.printStackTrace();
  18. }
  19. updateButtons();
  20. }
  21. });

2删除选中的文本

  1. int start = text.getSelectionStart();
  2. int end =text.getSelectionEnd();
  3. text.replaceRange("", start, end); // 删除被选取的文本。

3设置时间格式

  1. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
  2. String s=df.format(new Date());

4激活自动换行

  1. text.setLineWrap(true);//激活自动换行功能
  2. text.setWrapStyleWord(true);//激活断行不断字功能(有单词会跳

5设置字体

  1. font.setAccelerator(KeyStroke.getKeyStroke('a'));//点开菜单单键
  2. font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_MASK));//使用组合键
  3. font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, 0));//全局不用组合键

6打包后文件路径有错

因为打包后文件路径变了,要用URL来获得资源,由于,getClass().getResource是Object类的,可以用this调用

  1. URL url = this.getClass().getResource("/2.png");
  2. ImageIcon addIcon = new ImageIcon(url);
  3. about.setIcon(addIcon);

bug:

1选中文本换颜色不能实现

全部代码

  1. package testWin;
  2.  
  3. import java.awt.event.*;
  4. import java.awt.*;
  5. import javax.swing.*;
  6. import javax.swing.event.*;
  7. public class FontDialog extends JDialog implements ListSelectionListener,ActionListener {
  8. FontFamilyNames fontFamilyNames;
  9. int fontSize=12;
  10. int fontStyle=0;
  11. String fontName="宋体";
  12.  
  13. JList fontNameList,fontSizeList,fontStyleList;
  14.  
  15. Font font;
  16. JButton yes,cancel;
  17. static int YES=1,NO=0;
  18. int state=-1;
  19. FontDialog(JFrame f) {
  20. super(f);
  21. setTitle("字体对话框");
  22. //font=new Font("宋体",Font.PLAIN,12);
  23. fontFamilyNames=new FontFamilyNames();
  24. setModal(true);//当前对话框调用setModal(boolean b)设置为有模式
  25.  
  26. //字体列表框:
  27. String[] name=fontFamilyNames.getFontName();
  28. fontNameList=new JList();
  29. fontNameList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  30. fontNameList.setListData(name);
  31. fontNameList.setVisibleRowCount(8);
  32. //设置列表框第一条被选中
  33. fontNameList.setSelectedIndex(0);
  34. //添加滚动条
  35. JScrollPane p1=new JScrollPane(fontNameList);
  36. fontNameList.addListSelectionListener(this);
  37.  
  38. //字形列表框:
  39. String[] style={"常规 ","粗体","斜体","粗斜体"};
  40. fontStyleList=new JList();
  41. fontStyleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  42. fontStyleList.setListData(style);
  43. fontStyleList.setVisibleRowCount(8);
  44. fontStyleList.setSelectedIndex(0);
  45. JScrollPane p2=new JScrollPane(fontStyleList);
  46. fontStyleList.addListSelectionListener(this);
  47.  
  48. //大小列表框:
  49. String[] size={"8 ","10","12","14","16","18","20","22","24","26","28","30","32"};
  50. fontSizeList=new JList();
  51. fontSizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  52. fontSizeList.setListData(size);
  53. fontSizeList.setVisibleRowCount(8);
  54. fontSizeList.setSelectedIndex(0);
  55. JScrollPane p3=new JScrollPane(fontSizeList);
  56. fontSizeList.addListSelectionListener(this);
  57.  
  58. JPanel listPanel=new JPanel();
  59. listPanel.add(p1);
  60. listPanel.add(p2);
  61. listPanel.add(p3);
  62. add(listPanel,BorderLayout.NORTH);
  63.  
  64. yes=new JButton("确定");
  65. cancel=new JButton("取消");
  66. yes.addActionListener(this);
  67. cancel.addActionListener(this);
  68. JPanel pSouth=new JPanel();
  69. pSouth.add(yes);
  70. pSouth.add(cancel);
  71. add(pSouth,BorderLayout.SOUTH);
  72.  
  73. setBounds(250,150,400,250);
  74. setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  75. validate();
  76. }
  77. public void valueChanged(ListSelectionEvent e){
  78. if(e.getSource()==fontNameList) {
  79. fontName=(String)fontNameList.getSelectedValue();
  80. }
  81. else if(e.getSource()==fontStyleList) {
  82. fontStyle=fontStyleList.getSelectedIndex();
  83. }
  84. else if(e.getSource()==fontSizeList) {
  85. String s=(String)fontSizeList.getSelectedValue();
  86. fontSize=Integer.parseInt(s.trim());
  87. }
  88. font=new Font(fontName,fontStyle,fontSize);
  89. validate();
  90. }
  91. public void actionPerformed(ActionEvent e) {
  92. if(e.getSource()==yes) {
  93. state=YES;
  94. setVisible(false); //对话框设置为不可见
  95. }
  96. else if(e.getSource()==cancel) {
  97. state=NO;
  98. setVisible(false);
  99. }
  100. }
  101. public int getState() {
  102. return state;
  103. }
  104. public Font getFont() {
  105. return font;
  106. }
  107. }
  1. package testWin;
  2.  
  3. import java.awt.GraphicsEnvironment;
  4. public class FontFamilyNames {
  5. String allFontNames[];
  6. public String [] getFontName() {
  7. GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
  8. allFontNames=ge.getAvailableFontFamilyNames();
  9. return allFontNames;
  10. }
  11. }
  1. package testWin;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.io.*;
  8. import java.text.SimpleDateFormat;
  9. import java.util.Calendar;
  10. import java.util.Date;
  11.  
  12. import javax.swing.*;
  13. import javax.swing.filechooser.FileNameExtensionFilter;
  14. import javax.swing.undo.UndoManager;
  15.  
  16. public class Polish implements ActionListener{
  17. JFileChooser file1=new JFileChooser();
  18. FileNameExtensionFilter filter=new FileNameExtensionFilter("txt文件","txt");//文件名过滤
  19. private JTextArea text;
  20. private int huanhang=0;//换行参数
  21. UndoManager undoManager;
  22. private JFrame frame;
  23. void setFrame(JFrame a){
  24. frame=a;
  25. }
  26. void setText(JTextArea a){
  27. text=a;
  28. }
  29. void setUnodManager(UndoManager a){
  30. undoManager=a;
  31. }
  32. @Override
  33. public void actionPerformed(ActionEvent e) {
  34. // TODO 自动生成的方法存根
  35. if(e.getActionCommand().equals("撤销")){
  36. undoManager.undo();
  37. }else if(e.getActionCommand().equals("剪贴")){
  38. text.cut();
  39. }else if(e.getActionCommand().equals("复制")){
  40. text.copy();
  41. }else if(e.getActionCommand().equals("粘贴")){
  42. text.paste();
  43. }else if(e.getActionCommand().equals("删除")){
  44. int start = text.getSelectionStart();
  45. int end =text.getSelectionEnd();
  46. text.replaceRange("", start, end); // 删除被选取的文本。
  47. // String s=text.getText(); 方法2
  48. // String a=text.getSelectedText();
  49. // text.setText(s.replace(a,""));
  50. }else if(e.getActionCommand().equals("全选")){
  51. text.selectAll();
  52. }else if(e.getActionCommand().equals("时间/日期")){
  53. Calendar calendar=Calendar.getInstance();
  54. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
  55. String s=df.format(new Date());
  56. text.append(s);
  57. }else if(e.getActionCommand().equals("自动换行")){
  58. if(huanhang%2==0){
  59. text.setLineWrap(true);//激活自动换行功能
  60. text.setWrapStyleWord(true);//激活断行不断字功能(有单词会跳
  61. }else{
  62. text.setLineWrap(false);
  63. text.setWrapStyleWord(false);
  64. }
  65. huanhang++;
  66. }else if(e.getActionCommand().equals("颜色")){
  67. Color color2=new Color(120,30,0);
  68. Color color1=JColorChooser.showDialog(frame,"color",color2);
  69. text.setForeground(color1);
  70. text.setSelectedTextColor(color1);
  71. // JColorChooser jc=new JColorChooser();
  72. // Color color3=jc.showDialog(null,"zb",color2);
  73. // text.setSelectedTextColor(color3);
  74. }else if(e.getActionCommand().equals("字体")){
  75. FontDialog dialog1=new FontDialog(frame);
  76. dialog1.setVisible(true);
  77. Font font1=dialog1.getFont();
  78. text.setFont(font1);
  79. }else if(e.getActionCommand().equals("关于笔记本")){
  80. JOptionPane.showMessageDialog(frame, "2015118043,黄煜成,2016/11/17完成");
  81. }else if(e.getActionCommand().equals("打开")){
  82. file1.setFileFilter(filter);//过滤下
  83. int state=file1.showOpenDialog(frame);
  84. if(state==JFileChooser.APPROVE_OPTION){
  85. try{
  86. File dir=file1.getSelectedFile();
  87. FileReader fileReader=new FileReader(dir);
  88. BufferedReader in1=new BufferedReader(fileReader);
  89. text.setText(null);
  90. String s=null;
  91. for(;(s=in1.readLine())!=null;){
  92. text.append(s+"\n");
  93. }
  94. in1.close();
  95. fileReader.close();
  96. }
  97. catch(Exception e1){
  98. System.out.println(e1.getMessage());
  99. }
  100. }
  101. }else if(e.getActionCommand().equals("另存为")){
  102. file1.setFileFilter(filter);//过滤下
  103. int state=file1.showSaveDialog(frame);//显示出保存框
  104. if(state==JFileChooser.APPROVE_OPTION){
  105. try{
  106. File dir=file1.getCurrentDirectory();//得到保存路径
  107. String name=file1.getSelectedFile().getName();//得到选择的的名字
  108. File file=new File(dir,name);
  109. FileWriter fileWriter=new FileWriter(file);
  110. BufferedWriter out1=new BufferedWriter(fileWriter);
  111. out1.write(text.getText());
  112. out1.close();
  113. fileWriter.close();
  114. }
  115. catch(IOException e3){
  116. System.out.println(e3.getMessage());
  117. }
  118. }
  119. }
  120. else if(e.getActionCommand().equals("新建")){
  121. int n = 0;
  122. if(text.getText()!="")
  123. n=JOptionPane.showConfirmDialog(frame, "是否保存");
  124. if(n==JOptionPane.YES_OPTION){
  125.  
  126. file1.setFileFilter(filter);//过滤下
  127. int state=file1.showSaveDialog(frame);//显示出保存框
  128. if(state==JFileChooser.APPROVE_OPTION){
  129. try{
  130. File dir=file1.getCurrentDirectory();//得到保存路径
  131. String name=file1.getSelectedFile().getName();//得到选择的的名字
  132. File file=new File(dir,name);
  133. FileWriter fileWriter=new FileWriter(file);
  134. BufferedWriter out1=new BufferedWriter(fileWriter);
  135. out1.write(text.getText());
  136. out1.close();
  137. fileWriter.close();
  138. }
  139. catch(IOException e3){
  140. System.out.println(e3.getMessage());
  141. }
  142. }
  143. }
  144. else if(n==JOptionPane.NO_OPTION){
  145. text.setText(null);
  146. }
  147. }else if(e.getActionCommand().equals("退出")){
  148. System.exit(0);
  149. }else if(e.getActionCommand().equals("保存")){
  150. System.out.println("1111");
  151. File file1=new File ("新建保存文件.txt");
  152. if(!file1.exists())
  153. try {
  154. file1.createNewFile();
  155. } catch (IOException e1) {
  156. e1.printStackTrace();
  157. }
  158. try{
  159. FileWriter fileWriter=new FileWriter(file1);
  160. BufferedWriter out1=new BufferedWriter(fileWriter);
  161. out1.write(text.getText());
  162. out1.close();
  163. fileWriter.close();
  164. }
  165. catch(Exception e5){
  166. System.out.println(e5.getMessage());
  167. }
  168. }
  169. }
  170. }
  1. package testWin;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.EventQueue;
  5. import java.awt.Image;
  6. import java.awt.event.InputEvent;
  7. import java.awt.event.KeyEvent;
  8. import java.io.IOException;
  9. import java.net.URL;
  10.  
  11. import javax.imageio.ImageIO;
  12. import javax.swing.ImageIcon;
  13. import javax.swing.JFrame;
  14. import javax.swing.JMenu;
  15. import javax.swing.JMenuBar;
  16. import javax.swing.JMenuItem;
  17. import javax.swing.JPanel;
  18. import javax.swing.JScrollPane;
  19. import javax.swing.JTextArea;
  20. import javax.swing.KeyStroke;
  21. import javax.swing.border.EmptyBorder;
  22. import javax.swing.undo.UndoManager;
  23.  
  24. public class Text extends JFrame {
  25.  
  26. private JPanel contentPane;
  27. JTextArea textArea = new JTextArea();
  28. UndoManager undoManager = new UndoManager();
  29. /**
  30. * Launch the application.
  31. */
  32. public static void main(String[] args) {
  33. EventQueue.invokeLater(new Runnable() {
  34. public void run() {
  35. try {
  36. Text frame = new Text();
  37. frame.setVisible(true);
  38. } catch (Exception e) {
  39. e.printStackTrace();
  40. }
  41. }
  42. });
  43. }
  44.  
  45. /**
  46. * Create the frame.
  47. */
  48. public Text() {
  49. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  50. setBounds(100, 100, 681, 570);
  51.  
  52. JMenuBar menuBar = new JMenuBar();
  53. setJMenuBar(menuBar);
  54.  
  55. JMenu file = new JMenu("\u6587\u4EF6");
  56. menuBar.add(file);
  57.  
  58. JMenuItem newFile = new JMenuItem("\u65B0\u5EFA");
  59. newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
  60. file.add(newFile);
  61.  
  62. JMenuItem openFile = new JMenuItem("\u6253\u5F00");
  63. openFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
  64. file.add(openFile);
  65.  
  66. JMenuItem saveFile = new JMenuItem("\u4FDD\u5B58");
  67. saveFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
  68. file.add(saveFile);
  69.  
  70. JMenuItem save2File = new JMenuItem("\u53E6\u5B58\u4E3A");
  71. save2File.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, InputEvent.CTRL_MASK));
  72. file.add(save2File);
  73.  
  74. JMenuItem print = new JMenuItem("\u6253\u5370");
  75. print.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK));
  76. file.add(print);
  77.  
  78. JMenuItem close = new JMenuItem("\u9000\u51FA");
  79. close.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
  80. file.add(close);
  81.  
  82. JMenu menu = new JMenu("\u7F16\u8F91");
  83. menuBar.add(menu);
  84.  
  85. JMenuItem revoke = new JMenuItem("\u64A4\u9500");
  86. revoke.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK));
  87. menu.add(revoke);
  88.  
  89. JMenuItem clip = new JMenuItem("\u526A\u8D34");
  90. clip.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK));
  91. menu.add(clip);
  92.  
  93. JMenuItem copy = new JMenuItem("\u590D\u5236");
  94. copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
  95. menu.add(copy);
  96.  
  97. JMenuItem paste = new JMenuItem("\u7C98\u8D34");
  98. paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));
  99. menu.add(paste);
  100.  
  101. JMenuItem delete = new JMenuItem("\u5220\u9664");
  102. delete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK));
  103. menu.add(delete);
  104.  
  105. JMenuItem selectAll = new JMenuItem("\u5168\u9009");
  106. selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));
  107. menu.add(selectAll);
  108.  
  109. JMenuItem date = new JMenuItem("\u65F6\u95F4/\u65E5\u671F");
  110. menu.add(date);
  111.  
  112. JMenu format = new JMenu("\u683C\u5F0F");
  113. menuBar.add(format);
  114.  
  115. JMenuItem autoNextLine = new JMenuItem("\u81EA\u52A8\u6362\u884C");
  116. autoNextLine.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_MASK));
  117. format.add(autoNextLine);
  118.  
  119. JMenuItem font = new JMenuItem("\u5B57\u4F53");
  120. font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, InputEvent.CTRL_MASK));
  121. format.add(font);
  122.  
  123. JMenuItem color = new JMenuItem("\u989C\u8272");
  124. format.add(color);
  125.  
  126. JMenu help = new JMenu("\u5E2E\u52A9");
  127. menuBar.add(help);
  128.  
  129. JMenuItem about = new JMenuItem("\u5173\u4E8E\u7B14\u8BB0\u672C");
  130. about.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));
  131.  
  132. URL url = this.getClass().getResource("/2.png");
  133. ImageIcon addIcon = new ImageIcon(url);
  134. about.setIcon(addIcon);
  135.  
  136. help.add(about);
  137. contentPane = new JPanel();
  138. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  139. contentPane.setLayout(new BorderLayout(0, 0));
  140. setContentPane(contentPane);
  141.  
  142. JScrollPane scrollPane = new JScrollPane();
  143. contentPane.add(scrollPane, BorderLayout.CENTER);
  144.  
  145. scrollPane.setViewportView(textArea);
  146.  
  147. Polish polish1=new Polish();//锟斤拷锟斤拷锟斤拷
  148. UndoPolish undo=new UndoPolish();//锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
  149. textArea.getDocument().addUndoableEditListener(undo);//锟斤拷映锟斤拷锟斤拷锟斤拷锟�
  150.  
  151. undo.setUnodManager(undoManager);
  152. polish1.setText(textArea);
  153. polish1.setUnodManager(undoManager);//锟斤拷锟捷癸拷锟斤拷锟斤拷
  154. polish1.setFrame(this);
  155.  
  156. revoke.addActionListener(polish1);//锟斤拷蛹锟斤拷锟�
  157. clip.addActionListener(polish1);
  158. copy.addActionListener(polish1);
  159. paste.addActionListener(polish1);
  160. delete.addActionListener(polish1);
  161. selectAll.addActionListener(polish1);
  162. date.addActionListener(polish1);
  163.  
  164. autoNextLine.addActionListener(polish1);
  165. color.addActionListener(polish1);
  166. font.addActionListener(polish1);
  167.  
  168. about.addActionListener(polish1);
  169.  
  170. openFile.addActionListener(polish1);
  171. save2File.addActionListener(polish1);
  172. newFile.addActionListener(polish1);
  173. close.addActionListener(polish1);
  174. saveFile.addActionListener(polish1);
  175. }
  176. public ImageIcon getMyImage(String imageName){
  177. ClassLoader loader = getClass().getClassLoader();
  178. java.io.InputStream is = loader.getResourceAsStream(imageName);
  179. Image img;
  180. ImageIcon ii = null;
  181. try {
  182. img = ImageIO.read(is);
  183. ii = new ImageIcon(img);
  184. return ii;
  185. } catch (IOException e) {
  186. e.printStackTrace();
  187. }
  188. return ii;
  189. }
  190.  
  191. }
  1. package testWin;
  2.  
  3. import javax.swing.event.UndoableEditEvent;
  4. import javax.swing.event.UndoableEditListener;
  5. import javax.swing.undo.CannotRedoException;
  6. import javax.swing.undo.UndoManager;
  7.  
  8. public class UndoPolish implements UndoableEditListener{
  9. UndoManager undoManager;
  10. void setUnodManager(UndoManager a){
  11. undoManager=a;
  12. }
  13.  
  14. @Override
  15. public void undoableEditHappened(UndoableEditEvent e) {
  16. // TODO 自动生成的方法存根
  17. undoManager.addEdit(e.getEdit());
  18. }
  19.  
  20. }

java记事本的更多相关文章

  1. JAVA记事本的图形用户界面应用程序含过滤

    JAVA记事本的图形用户界面应用程序 过滤 题目简介: 整体分析: 实验代码: package note; import java.awt.EventQueue; import java.awt.ev ...

  2. JAVA记事本的图形用户界面应用程序含加密

    JAVA记事本的图形用户界面应用程序 加密 题目简介: 整体分析: 实验代码: import java.awt.EventQueue; import java.awt.event.ActionEven ...

  3. JAVA记事本的图形用户界面应用程序

    JAVA记事本的图形用户界面应用程序 整体分析: 代码实现: import java.awt.EventQueue; import java.awt.event.ActionEvent; import ...

  4. java 记事本 - 实例

    记事本记事本实例中使用了以下知识1.ui界面2.io流3.事件监听4.图形5.JFileChooser 类,用于打开文件,另存为文件.弹出文件选择器对话框 学习重点:JFileChooser,有很多方 ...

  5. java记事本1.2版

    功能:实现了新建,打开,保存,退出,复制,剪切,粘贴等功能 效果图:

  6. java记事本开发

    今天我想要分享的是一个用java写的一个记事本程序.我知道现在市面上有各种各样的记事本了,但是我发现有的写的功能不够完善,或者是代码层次结构不够清晰,有的甚至看了之后云里雾里的,有的还不乏了非常明显的 ...

  7. Java记事本编译

    配置环境: 在“系统变量”栏下执行三项操作:①新建“Java_Home”,设置其值为 JDK所在的绝对路径,如果你的事刚才的默认路径,那值为:C:\Program Files\Java\jdk1.7. ...

  8. Java记事本编写第一个程序“你好,世界”

  9. java基础 swing编程实战

    1. 实现金山词霸,点击左右收缩 效果图: exmaple code : /* * 词霸 * */ package demo7; import java.awt.*; import java.awt. ...

随机推荐

  1. zz将 VSTO 插件部署给所有用户

    原文:zz将 VSTO 插件部署给所有用户 注:本文原作者 Misha Shneerson 是 VSTO 团队的工程师.原文可以在下列地址找到:http://blogs.msdn.com/mshnee ...

  2. Java NIO API详解

    在JDK 1.4以前,Java的IO操作集中在java.io这个包中,是基于流的同步(blocking)API.对于大多数应用来说,这样的API使用很方便,然而,一些对性能要求较高的应用,尤其是服务端 ...

  3. MySQL 没有索引 锁全表

    <h3 class="title" style="box-sizing: inherit; margin: 8px 0px 15px; padding: 0px; ...

  4. 【HDOJ】1885 Key Task

    状态压缩+BFS,一次AC. /* 1885 */ #include <iostream> #include <queue> #include <cstring> ...

  5. Unity NGUI实现技能CD效果

    unity版本:4.5.1 NGUI版本:3.6.5 脚本代码:C# 在游戏中经常要实现技能的CD效果,NGUI中已经实现了这个功能,即在button上创建一个半透明的Sprite实现这个功能. 首先 ...

  6. [转]Android DPAD not enabled in AVD

     转自:http://blog.csdn.net/flyhigh200703/article/details/8955484 问题描述:打开Android的仿真器,右侧的按键部分对于上下左右键出现以下 ...

  7. 数据结构(线段树):CodeForces 85D Sum of Medians

    D. Sum of Medians time limit per test 3 seconds memory limit per test 256 megabytes input standard i ...

  8. UNIX环境下的消息队列

    消息队列和共享内存一样,也是一种IPC对象.消息队列其实就是消息的链表,每一则消息都是用户自己的结构体.服务端这边创建消息队列,客户端这边打开消息队列,两个进程就可以进行通信.创建和打开消息队列使用函 ...

  9. setState的同步更新

    react中的setState特点: 是异步操作函数: 组件在还没有渲染之前, this.setState 还没有被调用: 批量执行 State 转变时让 DOM 渲染更快(相对比一个一个的setSt ...

  10. Sql Server 2005 CLR实例

    本文转载:http://www.cnblogs.com/yongfa365/archive/2010/04/26/SQL-Server-CLR.html CSDN:博客参考http://blog.cs ...