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

📄 phonesimulator.java

📁 用java程序写的一个模拟打电话的小程序
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        
        gridBagConstraints1 = new java.awt.GridBagConstraints();
        gridBagConstraints1.gridx = 5;
        gridBagConstraints1.gridy = 0;
        gridBagConstraints1.weightx = 0.5;
        southPanel.add(saveButton, gridBagConstraints1);
        
        hangupButton.setToolTipText("结束通话");
        hangupButton.setFont(new java.awt.Font("宋体", 0, 12));
        hangupButton.setText("挂断");
        hangupButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                hangupButtonActionPerformed(evt);
            }
        });
        
        gridBagConstraints1 = new java.awt.GridBagConstraints();
        gridBagConstraints1.gridx = 2;
        gridBagConstraints1.gridy = 1;
        southPanel.add(hangupButton, gridBagConstraints1);
        
        redialButton.setToolTipText("重播上次的号码");
        redialButton.setFont(new java.awt.Font("宋体", 0, 12));
        redialButton.setText("重播");
        redialButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                redialButtonActionPerformed(evt);
            }
        });
        
        gridBagConstraints1 = new java.awt.GridBagConstraints();
        gridBagConstraints1.gridx = 3;
        gridBagConstraints1.gridy = 0;
        southPanel.add(redialButton, gridBagConstraints1);
        
        directListenToggle.setToolTipText("免提通话方式");
        directListenToggle.setFont(new java.awt.Font("宋体", 0, 12));
        directListenToggle.setText("免提");
        directListenToggle.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                directListenToggleActionPerformed(evt);
            }
        });
        
        gridBagConstraints1 = new java.awt.GridBagConstraints();
        gridBagConstraints1.gridx = 2;
        gridBagConstraints1.gridy = 0;
        southPanel.add(directListenToggle, gridBagConstraints1);
        
        pauseToggle.setToolTipText("暂停通话");
        pauseToggle.setFont(new java.awt.Font("宋体", 0, 12));
        pauseToggle.setText("暂停");
        pauseToggle.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                pauseToggleActionPerformed(evt);
            }
        });
        
        gridBagConstraints1 = new java.awt.GridBagConstraints();
        gridBagConstraints1.gridx = 3;
        gridBagConstraints1.gridy = 1;
        southPanel.add(pauseToggle, gridBagConstraints1);
        
        topPanel.add(southPanel, java.awt.BorderLayout.SOUTH);
        
        getContentPane().add(topPanel, java.awt.BorderLayout.CENTER);
        
    }//GEN-END:initComponents

    /** 存储地址簿
     * @param evt 所发生的事件
     */    
    private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveButtonActionPerformed
      System.out.println("Path:"+getCodeBase().getPath());   
      System.out.println("host:"+getCodeBase().getHost());      
     try{ 
           phoneAddSocket=new Socket(host,1200);//建立socket连接
           phoneAddSocket.getOutputStream().write(PhoneSimulator.accessAdd);
           //向服务器表明现在不是在初始化时访问地址簿
	   phoneAddSocket.getOutputStream().write(PhoneSimulator.savePhoneAdd);//向服务器表明想写出数据
           if(phoneAddSocket.getInputStream().read()==PhoneAddServer.Approved_Operation){
                BufferedWriter out=new BufferedWriter(
                        new OutputStreamWriter(phoneAddSocket.getOutputStream()));//得到输出流
                out.write(phoneAddTextArea.getText());
                System.out.println(phoneAddTextArea.getText());
                out.flush();
                out.close();
           }
           phoneAddSocket.close();
        }
        catch(IOException e){
            System.out.println(e.getMessage());
        }        
    }//GEN-LAST:event_saveButtonActionPerformed

    /** 处理重播事件
     * @param evt 所发生的事件
     */    
    private void redialButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_redialButtonActionPerformed
       if(currentState==directListenState){//从免提状态重播
           leaveDirectListenState();
       }
        enterAutoDialBState(currentState,lastDialNumber);      
                
    }//GEN-LAST:event_redialButtonActionPerformed

    /** 处理拨号事件
     * @param evt 所发生的事件
     */    
    private void dialButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dialButtonActionPerformed
         enterAutoDialBState(currentState,selectedNum);             
    }//GEN-LAST:event_dialButtonActionPerformed

    /** 处理用户选中地址簿中号码事件
     * @param evt 所发生的事件
     */    
    private void phoneAddTextAreaCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_phoneAddTextAreaCaretUpdate
         selectedNum=phoneAddTextArea.getSelectedText();
        if( selectedNum!=null && selectedNum.length()==8 
            &&(currentState==initialState || currentState==directListenState)){//选取了一个合法的电话号码
            enterAutoDialAState(currentState);//进入拨号状态A
        }        
    }//GEN-LAST:event_phoneAddTextAreaCaretUpdate

    /** 存储拨出的号码到地址簿
     * @param evt 所发生的事件
     */    
    private void storeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_storeButtonActionPerformed
        //连接状态时将用户拨出的新号码加入电话簿中
        String newNumber=phoneNumDisp.getText();
        int startPos=phoneAddTextArea.getText().indexOf(newNumber);        
        if(startPos==-1){//在电话簿中未找到该号码                        
            phoneAddTextArea.append(newNumber+"\n");
            startPos=phoneAddTextArea.getText().indexOf(newNumber);
        }       
    }//GEN-LAST:event_storeButtonActionPerformed

    /** 处理暂停事件
     * @param evt 所发生的事件
     */    
    private void pauseToggleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pauseToggleActionPerformed
        if(currentState==connectState){//当前状态为连接状态
            if(pauseToggle.isSelected()){//如果暂停键被选中表示暂停
                connectAudio.stop();
            }
            else{//暂停键释放接通继续
                connectAudio.loop();
            }
        }
    }//GEN-LAST:event_pauseToggleActionPerformed

    /** 处理挂断事件
     * @param evt 所发生的事件
     */    
    private void hangupButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_hangupButtonActionPerformed
        hangUpAudio.play();
        switch(currentState){
            case(manualDialState)://当前状态处于手动拨号状态
                leaveManualDialState();//作离开手动拨号状态的一些处理
                goBack(fromStateMan);//退回到进入手动拨号的那个状态               
                break;
            case(autoDialBState):
                leaveAutoDialBState();
                goBack(fromStateAuto);//退回到进入自动拨号的那个状态                
                break;
            case(connectState):
                leaveConnectState();
                goBack(fromStateCon);//退回到进入手动拨号的那个状态              
                break;
        }
    }//GEN-LAST:event_hangupButtonActionPerformed

    /** 处理电话拨号事件
     * @param evt 所发生的事件
     */    
    private void processNumberDial(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_processNumberDial
        if(firstDial){//第一次拨号表示刚进入手工拨号状态            
            enterManualDialState(currentState);
        }
        noOfNumber++;//又拨了一个号码        
        if(evt.getActionCommand() =="#"){
            noOfNumber--;//恢复为原来的拨号值
            dialNonDigitAudio.play();
        }
        else{
            if(evt.getActionCommand()=="*"){//按了*键取消原来的所输的号码
                dialNonDigitAudio.play();
                noOfNumber=0;//重新计数
                phoneNumDisp.setText("");//清空原来显示的号码
            }
            else{//剩余的数字键
                //??拨号的声音
                dialDigitAudio[Integer.parseInt(evt.getActionCommand())].play();
                phoneNumDisp.setText(phoneNumDisp.getText()+
                                     evt.getActionCommand());
                if(noOfNumber==8 ){//拨了8个电话号码后,自动进入连接状态
                    /*if(currentState==autoDialBState && autoDialInterrupted){
                        //自动拨号进程已被中断
                    }
                    else{
                     */
                    String phoneNum=phoneNumDisp.getText();
                    leaveManualDialState();
                    enterConnectState(currentState,phoneNum);                    
                }
            }
        }        
    }//GEN-LAST:event_processNumberDial

    /** 处理免提事件
     * @param evt 所发生的事件
     */    
    private void directListenToggleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_directListenToggleActionPerformed
        if(directListenToggle.isSelected()){//如果选中            
            enterDirectListenState(currentState);
        }else//从免提状态返回初态
        {            
            leaveDirectListenState();
            enterInitialState(currentState);
        }
    }//GEN-LAST:event_directListenToggleActionPerformed
    
    /** 刷新控件状态。根据系统所处的不同的刷新界面
     * @param state 系统现在所处的状态
     */    
    private void refreshComponent(int state) {
        switch (state){
            case initialState:// 置初态下个按钮的状态
                dialButton.setEnabled(false);//拨号按钮无效                
                directListenToggle.setEnabled(true);//免提键有效
                if(lastDialNumber.length()>0){//上次拨号有记录
                    redialButton.setEnabled(true);//置重播键有效
                }
                else//否则置重播键无效
                {
                    redialButton.setEnabled(false);
                }
                hangupButton.setEnabled(false);// 挂断键无效
                pauseToggle.setSelected(false);//未选暂停键.
                pauseToggle.setEnabled(false);//暂停键无效.
                //saveButton.setEnabled(true);//保存键有效
                storeButton.setEnabled(false);//存储键无效
                Button0.setEnabled(true);//数字键全有效
                Button1.setEnabled(true);
                Button2.setEnabled(true);
                Button3.setEnabled(true);
                Button4.setEnabled(true);
                Button5.setEnabled(true);
                Button6.setEnabled(true);
                Button7.setEnabled(true);
                Button8.setEnabled(true);
                Button9.setEnabled(true);
                ButtonStar.setEnabled(false);// *键无效
                ButtonSharp.setEnabled(true);//#键有效
                break;
            case (directListenState):
                dialButton.setEnabled(false);//拨号按钮无效                                
                directListenToggle.setEnabled(true);//免提键有效
                if(lastDialNumber.length()>0){//上次拨号有记录
                    redialButton.setEnabled(true);//置重播键有效
                }
                else//否则置重播键无效
                {
                    redialButton.setEnabled(false);
                }
                hangupButton.setEnabled(false);// 挂断键无效
                pauseToggle.setSelected(false);//未选暂停键.
                pauseToggle.setEnabled(false);//暂停键无效.
                //saveButton.setEnabled(true);//保存键有效
                storeButton.setEnabled(false);//存储键无效
                Button0.setEnabled(true);//数字键全有效
                Button1.setEnabled(true);
                Button2.setEnabled(true);
                Button3.setEnabled(true);
                Button4.setEnabled(true);
                Button5.setEnabled(true);
                Button6.setEnabled(true);
                Button7.setEnabled(true);
                Button8.setEnabled(true);
                Button9.setEnabled(true);
                ButtonStar.setEnabled(false);// *键无效
                ButtonSharp.setEnabled(true);//#键有效
                break;
            case (autoDialAState):
                dialButton.setEnabled(true);//拨号按钮有效
                directListenToggle.setEnabled(false);//免提键无效
                if(lastDialNumber.length()>0){//上次拨号有记录

⌨️ 快捷键说明

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