黑马程序员技术交流社区

标题: 写了一个GUI版程序员必背单词小软件 [打印本页]

作者: 血色@残阳    时间: 2015-2-19 17:23
标题: 写了一个GUI版程序员必背单词小软件
         在网上下了一个程序员必背单词的资料,就想着运用IO流的知识看能不能做一个学习小软件,因为之前没看过GUI,尼玛,为了做这个看了一天书学习GUI,做出来还是界面丑陋,唉……不过收获还是有一些的,同时希望大家能指正一些问题。这个小软件还有一个功能没做,就是保存上次背单词的进度,因为我没有想到好的办法,暂时没做这个功能,希望高手们给一点建议,先把原始代码放上,有好的建议在改进
  1. <p><p>package cn;</p><p>public class Run {</p><p> public static void main(String[] args) {
  2.   Window win = new Window();
  3. }</p><p>} </p></p><p>
  4. <img border="0" alt="" src="static/image/hrline/line4.png">
  5. package cn;</p><p>import java.io.*;
  6. public class FileOperate {
  7. BufferedReader br = null;
  8. String line = null;
  9. public FileOperate()
  10. {
  11.   try
  12.   {
  13.    br = new BufferedReader(new FileReader("words.txt"));      
  14.   }
  15.   catch (IOException e)
  16.   {
  17.    System.out.println("请检查words文件!");
  18.   }
  19. }

  20. public String getLine()
  21. {
  22.   try {
  23.    line = br.readLine().trim();  
  24.   } catch (IOException e) {
  25.    e.printStackTrace();
  26.   }finally{
  27.    return line;
  28.   }
  29. }

  30. public void close()
  31. {
  32.   try {
  33.    br.close();
  34.   } catch (IOException e) {
  35.    e.printStackTrace();
  36.   }
  37. }
  38. }</p><p>
  39. <img border="0" alt="" src="static/image/hrline/line9.png">
  40. package cn;
  41. /**
  42. * GUI版 程序员背单词
  43. * @author Bluce
  44. * @version 1.0
  45. */
  46. import java.awt.*;
  47. import java.awt.event.ActionEvent;
  48. import java.awt.event.ActionListener;
  49. import javax.swing.*;</p><p>public class Window extends JFrame implements ActionListener{
  50. //定义组件
  51. private JButton jb1;
  52. private JButton jb2;
  53. private JButton jb3;
  54. private JPanel jp;
  55. private JTextArea jta;

  56. int i = 0;
  57. FileOperate fo;
  58.    
  59. public Window()
  60. {
  61.   //创建组件
  62.   jb1 = new JButton("开始学习");
  63.   jb2 = new JButton("保存退出");
  64.   jb3 = new JButton("记住了");
  65.   jp = new JPanel(new GridLayout(1,3,7,5));
  66.   jta = new JTextArea(3,18);
  67.   //设置文本域
  68.   jta.setEditable(false);//不可修改复制
  69.   jta.setLineWrap(true); //激活换行功能
  70.   jta.setWrapStyleWord(true);            
  71.   jta.setFont(new Font("Default",Font.PLAIN,20));//设置文字字体、样式、大小
  72.   
  73.   //设置Layout布局
  74.   setLayout(new FlowLayout(FlowLayout.CENTER,10,47));
  75.   
  76.   //添加组件
  77.   add(jta);
  78.   add(jp);
  79.   jp.add(jb1);
  80.   jp.add(jb2);
  81.   jp.add(jb3);
  82.   //注册监听
  83.   jb1.addActionListener(this);
  84.   jb2.addActionListener(this);
  85.   jb3.addActionListener(this);
  86.   //指定Action命令   
  87.   jb1.setActionCommand("开始学习");
  88.   jb2.setActionCommand("保存退出");
  89.   jb3.setActionCommand("记住了");
  90.   
  91.   //设置窗体
  92.   setTitle("程序员必背单词");
  93.   setSize(340, 250);
  94.   setLocationRelativeTo(null);
  95.   setResizable(false);
  96.   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  97.   setVisible(true);
  98.   //实例化FileOperate类
  99.   fo = new FileOperate();         
  100. }
  101.   //覆写事件监听方法
  102. public void actionPerformed(ActionEvent e) {
  103.   if(e.getActionCommand().equals("开始学习")){
  104.    
  105.    jta.setText(fo.getLine());
  106.    i++;
  107.    jb1.setEnabled(false);//禁用该按钮,保证"开始学习"按钮只能按一次
  108.   }else if(e.getActionCommand().equals("记住了")){
  109.    //判断是否已经点击开始学习
  110.    if(i==1)
  111.     jta.setText(fo.getLine());     
  112.   }else if(e.getActionCommand().equals("保存退出")){
  113.    fo.close();
  114.    System.exit(0);
  115.   }
  116. }
  117. }


  118. </p>
复制代码

捕获.PNG (48.04 KB, 下载次数: 103)

捕获.PNG

作者: 血色@残阳    时间: 2015-2-19 17:26
不知道代码怎么成这样了,直接发源码包

ITword.zip

33.98 KB, 下载次数: 273


作者: 血色@残阳    时间: 2015-2-19 17:30
  1. package cn;

  2. import java.io.*;
  3. public class FileOperate {
  4.         BufferedReader br = null;
  5.         String line = null;
  6.         public FileOperate()
  7.         {
  8.                 try
  9.                 {
  10.                         br = new BufferedReader(new FileReader("words.txt"));                                               
  11.                 }
  12.                 catch (IOException e)
  13.                 {
  14.                         System.out.println("请检查words文件!");
  15.                 }
  16.         }
  17.        
  18.         public String getLine()
  19.         {
  20.                 try {
  21.                         line = br.readLine().trim();               
  22.                 } catch (IOException e) {
  23.                         e.printStackTrace();
  24.                 }finally{
  25.                         return line;
  26.                 }
  27.         }
  28.        
  29.         public void close()
  30.         {       
  31.                 try {
  32.                         br.close();
  33.                 } catch (IOException e) {
  34.                         e.printStackTrace();
  35.                 }
  36.         }       
  37. }
复制代码

作者: 血色@残阳    时间: 2015-2-19 17:31
  1. package cn;
  2. /**
  3. * GUI版 程序员背单词
  4. * @author Bluce
  5. * @version 1.0
  6. */
  7. import java.awt.*;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import javax.swing.*;

  11. public class Window extends JFrame implements ActionListener{
  12.         //定义组件
  13.         private JButton jb1;
  14.         private JButton jb2;
  15.         private JButton jb3;
  16.         private JPanel jp;
  17.         private JTextArea jta;
  18.        
  19.         int i = 0;       
  20.         FileOperate fo;
  21.                        
  22.         public Window()
  23.         {
  24.                 //创建组件
  25.                 jb1 = new JButton("开始学习");
  26.                 jb2 = new JButton("保存退出");
  27.                 jb3 = new JButton("记住了");
  28.                 jp = new JPanel(new GridLayout(1,3,7,5));
  29.                 jta = new JTextArea(3,18);
  30.                 //设置文本域
  31.                 jta.setEditable(false);//不可修改复制
  32.                 jta.setLineWrap(true); //激活换行功能
  33.                 jta.setWrapStyleWord(true);            
  34.                 jta.setFont(new Font("Default",Font.PLAIN,20));//设置文字字体、样式、大小
  35.                
  36.                 //设置Layout布局
  37.                 setLayout(new FlowLayout(FlowLayout.CENTER,10,47));
  38.                
  39.                 //添加组件
  40.                 add(jta);
  41.                 add(jp);
  42.                 jp.add(jb1);
  43.                 jp.add(jb2);
  44.                 jp.add(jb3);
  45.                 //注册监听
  46.                 jb1.addActionListener(this);
  47.                 jb2.addActionListener(this);
  48.                 jb3.addActionListener(this);
  49.                 //指定Action命令                       
  50.                 jb1.setActionCommand("开始学习");
  51.                 jb2.setActionCommand("保存退出");
  52.                 jb3.setActionCommand("记住了");
  53.                
  54.                 //设置窗体
  55.                 setTitle("程序员必背单词");
  56.                 setSize(340, 250);
  57.                 setLocationRelativeTo(null);
  58.                 setResizable(false);
  59.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  60.                 setVisible(true);
  61.                 //实例化FileOperate类
  62.                 fo = new FileOperate();                                                                       
  63.         }
  64.                 //覆写事件监听方法
  65.         public void actionPerformed(ActionEvent e) {
  66.                 if(e.getActionCommand().equals("开始学习")){       
  67.                        
  68.                         jta.setText(fo.getLine());       
  69.                         i++;
  70.                         jb1.setEnabled(false);//禁用该按钮,保证"开始学习"按钮只能按一次
  71.                 }else if(e.getActionCommand().equals("记住了")){
  72.                         //判断是否已经点击开始学习
  73.                         if(i==1)
  74.                                 jta.setText(fo.getLine());                                       
  75.                 }else if(e.getActionCommand().equals("保存退出")){
  76.                         fo.close();
  77.                         System.exit(0);
  78.                 }       
  79.         }
  80. }
复制代码

作者: 血色@残阳    时间: 2015-2-19 17:32
  1. package cn;

  2. public class Run {

  3.         public static void main(String[] args) {
  4.                 Window win = new Window();
  5.         }

  6. }
复制代码

作者: franksight    时间: 2015-2-19 17:38
够勤奋呐。。
作者: a410709560    时间: 2015-2-19 18:11
好东西,点个赞
作者: aawenwei    时间: 2015-2-19 18:47
谢谢 分享  像你致敬                              
作者: 流行VS泪痕    时间: 2015-2-19 20:15
不错不错!
作者: Gonnaloveu    时间: 2015-2-19 20:23
没学GUI,看你单词都编号了,如果想保存的话是否可以用一个文件记录单词编号,编号默认第一个,每次保存就更新记录的编号,找就从记录的编号开始找,
或者在单词文件第一个单词处写一个"记号",然后在每次点保存的时候就往所在单词处写一个"记号"并删除旧的"记号",然后每次开始时都在标记的地方开始.
才疏学浅,没法帮你写.
作者: 游人醉    时间: 2015-2-19 23:55
感谢分享
作者: jiao    时间: 2015-2-20 00:13
谢谢分享!
作者: xyf19881010    时间: 2015-2-20 00:59
谢谢分享
作者: 丶人世百态    时间: 2015-2-20 01:05
支持下楼主
作者: BEIKOU    时间: 2015-2-20 07:22
顶一下,
作者: huangchunwei    时间: 2015-2-20 08:00
好东西,楼主棒棒哒。赞一个。
作者: 2119391569    时间: 2015-2-20 08:18
看不懂,但是觉得很牛B的样子!
作者: jwl245322883    时间: 2015-2-20 17:02
多谢楼主分享啊,支持下
作者: 失眠的考拉    时间: 2015-3-1 19:27
楼主,好倪high啊。你报哪一期的?
作者: 浮夸    时间: 2015-3-1 19:40
好棒{:3_46:}{:3_46:}
作者: welfsen    时间: 2015-3-14 20:47
不错,学习的榜样!
作者: 179407246    时间: 2015-3-14 22:08
虽然不知道楼主发的是什么,但还是感谢楼主的分享
作者: 位喜    时间: 2015-3-14 22:22
厉害啊,向楼主学习
作者: 小七的    时间: 2015-3-15 01:53
多谢楼主分享
作者: daveyang    时间: 2015-3-21 20:17
顿时感觉亚历山大
作者: 吴阳    时间: 2015-3-21 20:54
必须顶一个!
作者: 张金龙    时间: 2015-3-21 21:05
牛人啊 ,厉害




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2