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

📄 clntcomm.java

📁 一个用Java实现的小型
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
      public void valueChanged(ListSelectionEvent e) {        selectionChanged(e);      }    });    JTableHeader timeListHeader = timeList.getTableHeader();    timeListHeader.addMouseListener(new java.awt.event.MouseAdapter() {      public void mouseClicked(java.awt.event.MouseEvent evt) {        sortColumn(evt);      }    });    timeList.addMouseListener(new java.awt.event.MouseAdapter() {      public void mouseClicked(java.awt.event.MouseEvent evt) {        editWindow(evt);      }    });        scrollPane.setViewportView(timeList);        add(scrollPane, java.awt.BorderLayout.CENTER);        menuPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));        startButton.setMnemonic(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK).getKeyCode());    startButton.setText("Start");    startButton.setBorder(null);    startButton.setBorderPainted(false);    startButton.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(java.awt.event.ActionEvent evt) {        toggleTimer(evt);      }    });        menuPanel.add(startButton);        add(menuPanel, java.awt.BorderLayout.NORTH);      }//GEN-END:initComponents  private void showHelp(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showHelp    new HelpDisplay().show();  }//GEN-LAST:event_showHelp  private void exportToTable(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exportToTable    JDBCControlPanel panel = new JDBCControlPanel();    if(panel.exportTimeRecordSet(times)) zeroProject(evt);  }//GEN-LAST:event_exportToTable    private void editJDBC(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editJDBC    JDBCControlPanel panel = new JDBCControlPanel();    panel.initGUI();    panel.show();  }//GEN-LAST:event_editJDBC    private void sortColumn(java.awt.event.MouseEvent evt) {    TableColumnModel columnModel = timeList.getColumnModel();    int viewColumn = columnModel.getColumnIndexAtX(evt.getX());    int column = timeList.convertColumnIndexToModel(viewColumn);    times.sort(column);    timeList.setModel(times.toTableModel());  }    private void editWindow(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_editWindow    if(evt.getModifiers() == java.awt.event.MouseEvent.BUTTON1_MASK) {      if(evt.getClickCount() == 2) editWindow(timeList.getSelectedRow());    }    if(evt.getModifiers() == java.awt.event.MouseEvent.BUTTON3_MASK) {      selectedIndex = timeList.rowAtPoint(new java.awt.Point(evt.getX(), evt.getY()));      timeList.setRowSelectionInterval(selectedIndex, selectedIndex);      editMenu.show(timeList, evt.getX(), evt.getY());    }  }//GEN-LAST:event_editWindow    private void toggleTimer(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_toggleTimer    if(timer.clockRunning){      timer.clockRunning = false;      startButton.setToolTipText("Start Timer");      startButton.setText("Start");    } else {      setTimer();      timer.clockRunning = true;      startButton.setToolTipText("Pause Timer");      startButton.setText("Pause");    }  }//GEN-LAST:event_toggleTimer    private void zeroProject(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zeroProject    Object[] options = {"OK", "Cancel"};    int dialog = JOptionPane.showOptionDialog(frame,    "All projects will be marked as having \n no elapsed time. Continue?",    "Zero-Out All Projects", JOptionPane.YES_NO_OPTION,    JOptionPane.WARNING_MESSAGE, null, options, options[1]);    if(dialog == 0){      int index = timeList.getSelectedRow();      times.resetTime();      timer.startTime = System.currentTimeMillis()/1000;      timeList.setModel(times.toTableModel());      timeList.repaint();      refreshTotalTime();    }  }//GEN-LAST:event_zeroProject    private void editProject(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editProject    editWindow(timeList.getSelectedRow());  }//GEN-LAST:event_editProject    private void deleteProject(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteProject    int len = 0;    int selectedIndex = timeList.getSelectedRow();        if(selectedIndex > -1){      //Warn the user      Object[] options = {"OK", "Cancel"};      int dialog = JOptionPane.showOptionDialog(frame,      "Project will be deleted. Continue?",      "Delete Project", JOptionPane.YES_NO_OPTION,      JOptionPane.WARNING_MESSAGE, null, options, options[1]);      if(dialog == 0){        times.delete(selectedIndex);        timeList.setModel(times.toTableModel());      }    }  }//GEN-LAST:event_deleteProject    private void newProject(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newProject    editWindow(times.size());  }//GEN-LAST:event_newProject  private void toggleTotals (java.awt.event.MouseEvent evt) {//GEN-FIRST:event_toggleTotals  showTotal = showTotal == false;  if(showTotal)    totalText.setText("Total:");  else    totalText.setText("Billable:");  refreshTotalTime();  }//GEN-LAST:event_toggleTotals    private void selectionChanged(ListSelectionEvent e) {    setTimer();  }    private void setTimer() {    if(timeList.getSelectedRow() >= 0){      long currTime = System.currentTimeMillis()/1000;      timer.startTime = currTime - times.getSeconds(timeList.getSelectedRow());    }  }    /**   * Create edit project window.   * @parm Index into the project list   */  public void editWindow(int i){    index = i;    selectedIndex = timeList.getSelectedRow();    TimeRecord record;    boolean newRecord = false;    try {      record = times.elementAt(index);      newRecord = false;    } catch (ArrayIndexOutOfBoundsException e) {      record = new TimeRecord();      newRecord = true;    }    EditDialog edit = new EditDialog((JFrame)this.getTopLevelAncestor(), record, newRecord);    edit.pack();    edit.setLocationRelativeTo(this);    edit.setVisible(true);  }    // Variables declaration - do not modify//GEN-BEGIN:variables  private javax.swing.JMenuBar menuBar;  private javax.swing.JMenu projectMenu;  private javax.swing.JMenuItem addMenuItem;  private javax.swing.JMenuItem deleteMenuItem;  private javax.swing.JMenuItem editMenuItem;  private javax.swing.JMenuItem zeroMenuItem;  private javax.swing.JMenu toolMenu;  private javax.swing.JMenuItem dbexportMenuItem;  private javax.swing.JMenuItem jdbcMenuItem;  private javax.swing.JMenuItem helpMenuItem;  private javax.swing.JPopupMenu editMenu;  private javax.swing.JMenuItem editPopupItem;  private javax.swing.JMenuItem deletePopupItem;  private javax.swing.JPanel totalPanel;  private javax.swing.JLabel totalText;  private javax.swing.JLabel totalTime;  private javax.swing.JScrollPane scrollPane;  private javax.swing.JTable timeList;  private javax.swing.JPanel menuPanel;  private javax.swing.JButton startButton;  // End of variables declaration//GEN-END:variables    /**   * TimerThread updates system variables upon each tick of the clock.   */  private class TimerThread extends Thread{    public boolean runThread, clockRunning;    public int updateSeconds;    public long startTime;        /**     * Create a new timer.     * @parm How often to update (in milliseconds)     * @parm The Consultant Manager screen to update     */    public TimerThread(int update) {      updateSeconds = update;      clockRunning = false;      runThread = true;      startTime = 0;    }        public void run(){      long currTime;      int index;      long currSeconds;            while(runThread){        try {          sleep(updateSeconds);          if(clockRunning){            //Get the current seconds past midnight.            currTime = System.currentTimeMillis()/1000;            if((index = timeList.getSelectedRow()) >= 0){              currSeconds = currTime - startTime;              times.setSeconds(index, currSeconds);              //Only repaint if the minutes have changed.              if (currSeconds % 60 == 0){                refreshTotalTime();                timeList.setValueAt(times.getTime(index), index, 1);                timeList.repaint();                savePrefs();              }            }          }        } catch (InterruptedException e) {          System.err.println("Sleep failed.");        }      }    }  }    private class EditDialog extends JDialog {    private JOptionPane optionPane;        EditDialog(JFrame frame, TimeRecord timerec, boolean isNewRecord) {      super(frame, true);      setTitle("Edit Project");            java.awt.GridBagConstraints first = new java.awt.GridBagConstraints();;      first.fill = java.awt.GridBagConstraints.HORIZONTAL;      java.awt.GridBagConstraints last = new java.awt.GridBagConstraints();      last.gridwidth = java.awt.GridBagConstraints.REMAINDER;      java.awt.GridBagConstraints bottom = new java.awt.GridBagConstraints();      bottom.gridwidth = 2;            final TimeRecord record = timerec;      final boolean newRecord = isNewRecord;      final JTextField projField = new JTextField(record.projectName);      projField.setColumns(10);      final JTextField aliasField = new JTextField(record.alias);      aliasField.setColumns(10);      final JTextField timeField = new JTextField(record.toString());      timeField.setColumns(10);      final JCheckBox billable = new JCheckBox("Billable Project", record.billable);      JPanel editPanel = new JPanel();      editPanel.setLayout(new java.awt.GridBagLayout());      editPanel.add(new JLabel("Project: "), first);      editPanel.add(projField, last);      editPanel.add(new JLabel("Alias: "), first);      editPanel.add(aliasField, last);      editPanel.add(new JLabel("Time: "), first);      editPanel.add(timeField, last);      editPanel.add(billable, bottom);            optionPane = new JOptionPane(editPanel, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);      setContentPane(optionPane);      setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);      addWindowListener(new java.awt.event.WindowAdapter() {        public void windowClosing(java.awt.event.WindowEvent we) {          optionPane.setValue(new Integer(JOptionPane.CLOSED_OPTION));        }      });            optionPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() {        public void propertyChange(java.beans.PropertyChangeEvent e) {          String prop = e.getPropertyName();                    if (isVisible() && (e.getSource() == optionPane) && (prop.equals(JOptionPane.VALUE_PROPERTY) || prop.equals(JOptionPane.INPUT_VALUE_PROPERTY))) {            String value = optionPane.getValue().toString();            if (value == JOptionPane.UNINITIALIZED_VALUE) return;            optionPane.setValue(JOptionPane.UNINITIALIZED_VALUE);                        if (value.equals("0")) {              long newTime = System.currentTimeMillis()/1000;              record.projectName = projField.getText();              record.setSeconds(timeField.getText());              if(aliasField.getText().length() > 0) record.alias = aliasField.getText();              else record.alias = null;              if (index == selectedIndex) timer.startTime = newTime-record.seconds;              record.billable = billable.isSelected();              if(newRecord) times.add(record);              timeList.setModel(times.toTableModel());              timeList.repaint();              if(selectedIndex == -1) //Nothing selected                timeList.setRowSelectionInterval(index, index);              else                timeList.setRowSelectionInterval(selectedIndex, selectedIndex);              refreshTotalTime();              setVisible(false);            } else { // user closed dialog or clicked cancel              setVisible(false);            }          }        }      });    }  }}

⌨️ 快捷键说明

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