一个JAVA写的背单词程序
类别: JAVA教程
俺看了一些Java, 写个程序出来玩玩。由于界面是用Jbuilder生成的,可能代码比较乱,而且还没合起来。 目前版本是0.00001 /* * Word.java * * Created on 2004-9-26 * */ package com.henry.vocabulary; import java.util.*; import java.text.*; public class Word { private static final SimpleDateFormat format = new SimpleDateFormat( "yyyy-M-dd hh:mm:ss"); private static final int[] memoryCurve = { 1, 2, 4, 8, 12, 20, 36, 54, 87, 160, 360 }; // Every "tomorrow" starts from 5AM, not from middle night. private static final int hourAdjust = -5; static Calendar today = Calendar.getInstance(); { today.add(Calendar.HOUR, hourAdjust); today.set(Calendar.HOUR,12); today.set(Calendar.MINUTE,0); today.set(Calendar.SECOND,0); } private String _wordValue; Date _nextReviewTime; int _reviewTimes; int _forgetTimes; /** * @param _wordValue The _wordValue to set. */ public void setWordValue(String _wordValue) { this._wordValue = _wordValue; } /** * @return Returns the _wordValue. */ public String getWordValue() { return _wordValue; } public Word(String wordValue, String nextReviewTime, int reviewTimes, int forgetTimes) { try { setWordValue(wordValue); _nextReviewTime = format.parse(nextReviewTime); _reviewTimes = reviewTimes; _forgetTimes = forgetTimes; } catch (ParseException pe) { System.out.println("The input is not a date!"); throw new RuntimeException(pe); } } public Word(String strWord) { try { String[] values = strWord.split(","); setWordValue(values[0]); _nextReviewTime = format.parse(values[1]); _reviewTimes = Integer.parseInt(values[2].trim()); if(values.length == 4) { // for compatible to the old version _forgetTimes = Integer.parseInt(values[3]); } else { _forgetTimes = 0; } } catch (ParseException pe) { System.out.println("The input is not a date!"); throw new RuntimeException(pe); } } public void forget() { _nextReviewTime = today.getTime(); _reviewTimes = 0; _forgetTimes++; } public void remember() { Calendar nextTime = (Calendar) today.clone(); nextTime.add(Calendar.DATE, memoryCurve[_reviewTimes]); _nextReviewTime = nextTime.getTime(); _reviewTimes++; } public String toString() { final SimpleDateFormat format2 = new SimpleDateFormat( "yyyy-M-dd hh:mm:ss"); String s = getWordValue() + "," + format2.format(_nextReviewTime) + "," + _reviewTimes + "," + _forgetTimes; return s; } /** * Judge if this word need to be reviewed today. * Comment for isNeedReview */ public boolean isNeedReview() { if(this._nextReviewTime.after(today.getTime())) { return false; } return true; } public static void main(String[] args) { Word w = new Word("test", "2004-8-30", 2, 3); Word w1 = new Word("test,2004-8-30,2,3"); System.out.println(w); w.remember(); System.out.println(w); w.forget(); System.out.println(w); System.out.println(w1); w1.remember(); System.out.println(w1); w1.forget(); System.out.println(w1); } } /* * WordsReview.java * * Created on 2004-9-26 * */ package com.henry.vocabulary; import java.util.*; import java.io.*; /** * @author Henry * */ public class WordsReview { List wordList = new ArrayList(); List wordNeedReviewList = new ArrayList(); Word currentWord; /** * @param fileName */ public void readFromFile(String fileName){ try{ StringBuffer sb = new StringBuffer(); BufferedReader br = new BufferedReader(new FileReader(fileName)); String s; while ((s = br.readLine()) != null) { this.currentWord = new Word(s); this.wordList.add(this.currentWord); if(this.currentWord.isNeedReview()){ this.wordNeedReviewList.add(this.currentWord); } } this.currentWord = null; } catch (FileNotFoundException e) { System.out.println(e); System.out.println(e.getStackTrace()); } catch (IOException ioe) { System.out.println(ioe); System.out.println(ioe.getStackTrace()); } } /** * @param fileName */ public void saveToFile(String fileName){ } /** * Get a word, which needs to be reviewed. * @return */ public String getWord(){ if(this.wordNeedReviewList.isEmpty()){ return null; } Random random = new Random(); int ramdonIndex = random.nextInt() % this.wordNeedReviewList.size(); currentWord = (Word)this.wordNeedReviewList.get(ramdonIndex); return currentWord.getWordValue(); } public void saveWord(boolean isForget){ if(this.currentWord == null){ System.out.println("Should not come here!"); System.out.println("When you call saveWord to save the word, "); System.out.println(" you should get the word first."); return; } if(isForget) { this.currentWord.forget(); } else { this.currentWord.remember(); this.wordNeedReviewList.remove(currentWord); } } public static void main(String[] args) { WordsReview wr = new WordsReview(); wr.readFromFile("HenryPan.txt"); String s = wr.getWord(); wr.saveWord(false); } } // MainFrame.java package app2; import java.awt.*; import java.awt.event.*; import javax.swing.*; /** *
Title:
*
Description:
*
Copyright: Copyright (c) 2004
*
Company:
* @author Henry * @version 1.0 */ public class MainFrame extends JFrame { JPanel contentPane; GridBagLayout gridBagLayout1 = new GridBagLayout(); JTextField word = new JTextField(); JRadioButton remember = new JRadioButton(); JRadioButton forget = new JRadioButton(); JButton next = new JButton(); ButtonGroup buttonGroup1 = new ButtonGroup(); //Construct the frame public MainFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); word.setFont(new java.awt.Font("Dialog", 0, 16)); word.setSelectionStart(0); word.setText(""); contentPane.setLayout(gridBagLayout1); this.setSize(new Dimension(560, 463)); this.setTitle("TAFU Vocabulary"); remember.setFont(new java.awt.Font("Dialog", 0, 16)); remember.setText("I remember it well."); forget.setFont(new java.awt.Font("Dialog", 0, 16)); forget.setSelected(true); forget.setText("I forget it."); next.setFont(new java.awt.Font("Dialog", 0, 16)); next.setText("Next"); next.addActionListener(new Frame1_next_actionAdapter(this)); contentPane.add(word, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(17, 9, 0, 31), 494, 39)); contentPane.add(remember, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0 ,GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(26, 0, 1, 0), 0, 0)); contentPane.add(forget, new GridBagConstraints(1, 1, 1, 2, 0.0, 0.0 ,GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(25, 0, 37, 0), 0, 0)); contentPane.add(next, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 9, 59, 13), 44, 11)); buttonGroup1.add(forget); buttonGroup1.add(remember); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } void next_actionPerformed(ActionEvent e) { System.out.println("Next action perform!"); if(this.forget.isSelected()){ } } } class Frame1_next_actionAdapter implements java.awt.event.ActionListener { MainFrame adaptee; Frame1_next_actionAdapter(MainFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.next_actionPerformed(e); } } // MainWin.java package app2; import javax.swing.UIManager; import java.awt.*; /** *
Title:
*
Description:
*
Copyright: Copyright (c) 2004
*
Company:
* @author not attributable * @version 1.0 */ public class MainWin { boolean packFrame = false; //Construct the application public MainWin() { MainFrame frame = new MainFrame(); //Validate frames that have preset sizes //Pack frames that have useful preferred size info, e.g. from their layout if (packFrame) { frame.pack(); } else { frame.validate(); } //Center the window Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.setVisible(true); } //Main method public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { e.printStackTrace(); } new MainWin(); } }
Title:
*
Description:
*
Copyright: Copyright (c) 2004
*
Company:
* @author Henry * @version 1.0 */ public class MainFrame extends JFrame { JPanel contentPane; GridBagLayout gridBagLayout1 = new GridBagLayout(); JTextField word = new JTextField(); JRadioButton remember = new JRadioButton(); JRadioButton forget = new JRadioButton(); JButton next = new JButton(); ButtonGroup buttonGroup1 = new ButtonGroup(); //Construct the frame public MainFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); word.setFont(new java.awt.Font("Dialog", 0, 16)); word.setSelectionStart(0); word.setText(""); contentPane.setLayout(gridBagLayout1); this.setSize(new Dimension(560, 463)); this.setTitle("TAFU Vocabulary"); remember.setFont(new java.awt.Font("Dialog", 0, 16)); remember.setText("I remember it well."); forget.setFont(new java.awt.Font("Dialog", 0, 16)); forget.setSelected(true); forget.setText("I forget it."); next.setFont(new java.awt.Font("Dialog", 0, 16)); next.setText("Next"); next.addActionListener(new Frame1_next_actionAdapter(this)); contentPane.add(word, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(17, 9, 0, 31), 494, 39)); contentPane.add(remember, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0 ,GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(26, 0, 1, 0), 0, 0)); contentPane.add(forget, new GridBagConstraints(1, 1, 1, 2, 0.0, 0.0 ,GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(25, 0, 37, 0), 0, 0)); contentPane.add(next, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 9, 59, 13), 44, 11)); buttonGroup1.add(forget); buttonGroup1.add(remember); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } void next_actionPerformed(ActionEvent e) { System.out.println("Next action perform!"); if(this.forget.isSelected()){ } } } class Frame1_next_actionAdapter implements java.awt.event.ActionListener { MainFrame adaptee; Frame1_next_actionAdapter(MainFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.next_actionPerformed(e); } } // MainWin.java package app2; import javax.swing.UIManager; import java.awt.*; /** *
Title:
*
Description:
*
Copyright: Copyright (c) 2004
*
Company:
* @author not attributable * @version 1.0 */ public class MainWin { boolean packFrame = false; //Construct the application public MainWin() { MainFrame frame = new MainFrame(); //Validate frames that have preset sizes //Pack frames that have useful preferred size info, e.g. from their layout if (packFrame) { frame.pack(); } else { frame.validate(); } //Center the window Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.setVisible(true); } //Main method public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { e.printStackTrace(); } new MainWin(); } }
- 上一篇: 用java实现DB2的自定义函数
- 下一篇: 用java读写ini配置文件
-= 资 源 教 程 =-
文 章 搜 索