⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.java

📁 一个应用timer的小程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package net.sujee.javatimer;import net.sujee.javatimer.Task;import net.sujee.util.LogWriter;import net.sujee.util.ConfigFileParser;import net.sujee.javatimer.TimeSlider;import net.sujee.javatimer.FileExport;import net.sujee.util.GenUtil;import java.util.Vector;import javax.swing.*;import javax.swing.table.*;import javax.swing.event.*;import java.awt.event.*;import java.io.IOException;import java.io.File;import java.util.Random;import java.util.Date;import java.awt.*;/** *  Description of the Class * *@author     sujee *@created    October 21, 2000 */public class Main extends JFrame implements ActionListener,      ListSelectionListener,      TimerCallback{   TaskMgr mgr;   JTable table;   TaskTableModel mTableModel;   GetUserInput userInput;   JFileChooser fileChooser;   FileExport fileExport;   File mCurrentFile;   Timer mTimer;   JComboBox mTraceCombo;   ConfigFileParser configFile;   JButton         mButtonNewFile,         mButtonSaveFile,         mButtonOpenFile,         mButtonNewTask,         mButtonDelTask,         mButtonEditTask,         mButtonStartTask,         mButtonStopTask,         mButtonChart,         mButtonAbout,         mButtonExit;   // ACtionListener   boolean notSaved;   // ListSelectionListener   int[] mRowsSelected;   // this holds rows selected   int mFirstIndex, mLastIndex;   JPanel tracePanel;   JDialog aboutDialog;   //TimeSlider mTimeSlider;   /**    *  Constructor for the Main object    *    *@exception  Exception  Description of Exception    */   public Main() throws Exception {      super( "Project Timer" );      Global.logWriter = new LogWriter ();      Global.DEBUG = GenUtil.readBoolProperty("NET.SUJEE.DEBUG", false);      Global.DEBUG = true;  // hardcoding      configFile = new ConfigFileParser( "projtimer.cfg" );      String lastFileOpened = configFile.getConfigProperty("LastFile", true);      if ( (lastFileOpened == null)  || (lastFileOpened.equals("")) )         mgr = new TaskMgr();      else // open the last file!      {         // BUGFIX : 132601         // (http://sourceforge.net/bugs/?func=detailbug&bug_id=132601&group_id=10562)         // before we weren't checking if the last Opened file existed.         File lastFile = new File (lastFileOpened);         if ( lastFile.exists() && lastFile.isFile() && lastFile.canRead() )         {            mgr = new TaskMgr (lastFileOpened);            mCurrentFile = new File (lastFileOpened);         }         else            mgr = new TaskMgr();         // end BUGFIX : 132601      }      mTableModel = new TaskTableModel( this );      mTableModel.refresh( mgr );      // GUI stuff      jbInit();      fileChooser = new JFileChooser();      fileChooser.setFileSelectionMode( JFileChooser.FILES_ONLY );      fileChooser.setMultiSelectionEnabled( false );      ExampleFileFilter filter = new ExampleFileFilter( "tmr", "JavaTimer files" );      fileChooser.addChoosableFileFilter( filter );      fileExport = new FileExport (this, configFile.readIntProperty("Window.Export.width", 400),                   configFile.readIntProperty("Window.Export.height", 300)                   );      //setup timer      mTimer = new Timer();      mTimer.addCallback( this, 60000 );      mTimer.addCallback( mgr, 1000 );      mTimer.addCallback( mTableModel, 1000 );      setButtonState();   }   /**    *  Sets the ButtonState attribute of the Main object    */   public void setButtonState() {      int totalRowsSelected = 0;      if ( mRowsSelected != null )      {         totalRowsSelected = mRowsSelected.length;      }      if ( totalRowsSelected == 0 )      {         // nothing         //disable all the buttons         mButtonDelTask.setEnabled( false );         mButtonEditTask.setEnabled( false );         mButtonStartTask.setEnabled( false );         mButtonStopTask.setEnabled( false );      }      else if ( totalRowsSelected == 1 )      {         if ( Global.traceLevel >= 3 )         {            Global.logWriter.log( "Exactly one task selected : " + mRowsSelected[0] );         }         // see if the selected task is active         Task t = mgr.getTask( mRowsSelected[0] );         if ( t.isAlive() )         {            mButtonDelTask.setEnabled( false );            mButtonEditTask.setEnabled( false );            mButtonStartTask.setEnabled( false );            mButtonStopTask.setEnabled( true );         }         else         {            mButtonDelTask.setEnabled( true );            mButtonEditTask.setEnabled( true );            mButtonStartTask.setEnabled( true );            mButtonStopTask.setEnabled( false );         }      }      else      {         // more than one selected         if ( Global.traceLevel >= 3 )         {            Global.logWriter.log( "#tasks selected : " + totalRowsSelected );         }         mButtonDelTask.setEnabled( true );         mButtonEditTask.setEnabled( false );         mButtonStartTask.setEnabled( false );         mButtonStopTask.setEnabled( false );      }      if ( mgr.getTaskCount() > 0 )      {         mButtonChart.setEnabled( true );      }      else      {         mButtonChart.setEnabled( false );      }   }   public String getVersion ()   {      /*  Changes from 1.0:       *    - BUGFIX 133076       *             Making task edit window modal & centered around parent frame       *    - BUGFIX 132601       *             checking if the 'LastFile' exists before reopening @ startup       */      return "1.1";   }   /**    *  Description of the Method    *    *@param  event  Description of Parameter    */   public void actionPerformed( ActionEvent event ) {      //Button Events      if ( Global.traceLevel >= 3 )      {         Global.logWriter.log( event.toString() );      }      Object source = event.getSource();      if ( source == mTraceCombo )      {         JComboBox comb = ( JComboBox ) source;         // clever trick here, tracel levels are added to         // combo in increasing order :-)         Global.traceLevel = comb.getSelectedIndex();         Global.logWriter.log( "Trace Level set to : " + Global.traceLevel );         return;      }      JButton button = ( JButton ) source;      if ( button == mButtonExit )      {         if ( Global.traceLevel >= 2 )         {            Global.logWriter.log( "Exit button pressed" );         }         exit();      }      else if (button == mButtonAbout)      {         if (aboutDialog == null)         {            aboutDialog = new JDialog (this, "About Project Timer", true);            aboutDialog.setLocationRelativeTo(this);            aboutDialog.setSize (360,180);            aboutDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);            aboutDialog.getContentPane().add( new JLabel (                                   "<html> <p> " +                                   " <b> <h1> Project Timer </h1> - <i> v " + getVersion() + "</i>  <br>" +                                   "Project Home : <a href=\"http://sourceforge.net/projects/projtimer/\">http://sourceforge.net/projects/projtimer/</a> <br>" +                                   "Author : <i>  Sujee Sivasbramaniyam </i> <br>" +                                   "Contact : <i> sujee@netlane.com </i> </b> <p> </html>"                                   ));         }         aboutDialog.show();      }      else if ( button == mButtonDelTask )      {         // pop up a confirmation dialog         int answer = JOptionPane.showConfirmDialog(this,"Do you want to DELETE this task?",                      "", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);         // delete all the selected tasks         // ALERT : removing tasks one by one in for loop won't work.  Why?         // well, the moment we delete something, the indexes will         // change, rendering every following index meaningless!         // took me a while to figure that! :-)         if ( ( answer == JOptionPane.YES_OPTION) &&   (mRowsSelected != null )  )         {            mgr.deleteTask( mRowsSelected );            // once all done, refresh the model            //mTableModel.fireTableRowsDeleted(mFirstIndex,mLastIndex);            mTableModel.refresh( mgr );            table.clearSelection();            mRowsSelected = null;            mButtonSaveFile.setEnabled( true );            notSaved = true;         }      }      // end : deletebutton      else if ( button == mButtonNewTask )      {         TaskEditWindow taskEdit = new TaskEditWindow( this, // BUGFIX : 133076                        new Task( "Unknown", "Unknown" ) );         if ( taskEdit.showEdit() )         {            // show window            Task task = taskEdit.getEditedTask();            mgr.createTask( task );            mTableModel.refresh( mgr );            mButtonSaveFile.setEnabled( true );            notSaved = true;         }      }      // end : newTask      else if ( button == mButtonEditTask )      {         if ( table.getSelectedRowCount() == 1 )         {            // only one EDIT at a time            int row = table.getSelectedRow();            Task t = mgr.getTask( row );            TaskEditWindow taskEdit = new TaskEditWindow( this, // BUGFIX : 133076                                          t );            if ( taskEdit.showEdit() )            {               mgr.setTask( row, taskEdit.getEditedTask() );               mButtonSaveFile.setEnabled( true );               notSaved = true;               mTableModel.fireTableCellUpdated( row, 2 );            }         }         else         {            Global.logWriter.log( "Select only one task to edit" );         }      }      else if ( button == mButtonSaveFile )      {         saveToFile();      }      else if ( button == mButtonNewFile )      {         mTimer.removeCallback( mgr );         mgr = new TaskMgr();         mTimer.addCallback( mgr, 1000 );         mCurrentFile = null;         notSaved = true;         mButtonSaveFile.setEnabled( true );         mButtonNewTask.setEnabled( true );         mTableModel.refresh( mgr );      }      else if ( button == mButtonOpenFile )      {         int ret = fileChooser.showOpenDialog( this );         if ( ret == JFileChooser.APPROVE_OPTION )         {            try            {               mTimer.removeCallback( mgr );               mgr = new TaskMgr( fileChooser.getSelectedFile() );               mTimer.addCallback( mgr, 1000 );               mTableModel.refresh( mgr );               mButtonNewTask.setEnabled( true );               table.clearSelection();               mCurrentFile = fileChooser.getSelectedFile();               if ( Global.traceLevel >= 1 )               {                  Global.logWriter.log( "New file is : " + mCurrentFile );               }            }            catch ( Exception e )            {               Global.logWriter.log( e.toString() );            }         }      }      else if ( button == mButtonStartTask )      {         if ( table.getSelectedRowCount() == 1 )         {            // only one EDIT at a time            int row = table.getSelectedRow();            mTableModel.setValueAt( new Boolean( true ), row, 3 );            mTableModel.fireTableCellUpdated( row, 3 );         }         else         {            Global.logWriter.log( "Select only one task to Start" );         }      }      else if ( button == mButtonStopTask )      {         if ( table.getSelectedRowCount() == 1 )         {            // only one EDIT at a time            int row = table.getSelectedRow();            mTableModel.setValueAt( new Boolean( false ), row, 3 );            mTableModel.fireTableCellUpdated( row, 3 );         }         else         {            Global.logWriter.log( "Select only one task to Stop" );         }      }      else if ( button == mButtonChart )      {         Vector v;         if (mRowsSelected == null) // get all tasks         {            v = mgr.listTasks();         }         else // get only selected tasks         {            v = new Vector ();            for (int i=0; i < mRowsSelected.length; i++)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -