📄 telephone.java
字号:
return; } public void clearDisplay() { // Clear the internal data store. _display = ""; _areaCode = ""; _local = ""; _exchange = ""; // Put up the current time and date on the display. _numberDisplay.setText(""); return; } public void startClockTimer() { long currentTime = System.currentTimeMillis(); long timeRemaining = MILLIS_PER_MINUTE - (currentTime % MILLIS_PER_MINUTE); // Figure out how long until the top of the minute // and set the timer for that amount. startTimer("ClockTimer", timeRemaining); return; } public void updateClock() { _numberDisplay.setText(_ClockFormatter.format(new Date())); return; } public void setReceiver(String command, String text) { if (_receiverButton != null) { _receiverButton.setActionCommand(command); _receiverButton.setText(text); } return; } private void _loadSounds() { String directory = "jar:file:./telephone.jar!/sounds/"; String urlString = ""; URL soundURL; AudioClip audioClip; AudioData audioData; int i; // Load in the touch tone clips. _dtmf = new AudioClip[12]; for (i = 0; i < 12; ++i) { try { urlString = directory + "touch_tone_" + Integer.toString(i) + ".au"; soundURL = new URL(urlString); _dtmf[i] = Applet.newAudioClip(soundURL); } catch (MalformedURLException urlex) { System.err.println("Telephone: \"" + urlString + "\" is a bad URL."); } } // Load in sound URLs. try { _audioMap = new HashMap<String, AudioData>(); urlString = directory + "ring.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 4000); _audioMap.put("ringing", audioData); urlString = directory + "dialtone.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("dialtone", audioData); urlString = directory + "busy_signal.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("busy", audioData); urlString = directory + "fast_busy_signal.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("fast_busy", audioData); urlString = directory + "phone_off_hook.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 500); _audioMap.put("phone_off_hook", audioData); urlString = directory + "911.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 13000); _audioMap.put("911", audioData); urlString = directory + "and.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 750); _audioMap.put("and", audioData); urlString = directory + "50_cents_please.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 6000); _audioMap.put("50_cents_please", audioData); urlString = directory + "could_not_be_completed.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 4000); _audioMap.put("could_not_be_completed", audioData); urlString = directory + "exactly.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("exactly", audioData); urlString = directory + "oclock.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("oclock", audioData); urlString = directory + "oh.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("oh", audioData); urlString = directory + "second.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1200); _audioMap.put("second", audioData); urlString = directory + "seconds.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1400); _audioMap.put("seconds", audioData); urlString = directory + "the_number_you_have_dialed.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1800); _audioMap.put("you_dialed", audioData); urlString = directory + "the_time_is.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1100); _audioMap.put("the_time_is", audioData); urlString = directory + "nyctemp.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 18500); _audioMap.put("NYC_temp", audioData); urlString = directory + "AM.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1250); _audioMap.put("AM", audioData); urlString = directory + "PM.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("PM", audioData); urlString = directory + "0.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("0", audioData); urlString = directory + "1.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 900); _audioMap.put("1", audioData); urlString = directory + "2.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 900); _audioMap.put("2", audioData); urlString = directory + "3.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("3", audioData); urlString = directory + "4.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 900); _audioMap.put("4", audioData); urlString = directory + "5.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 900); _audioMap.put("5", audioData); urlString = directory + "6.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 850); _audioMap.put("6", audioData); urlString = directory + "7.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1250); _audioMap.put("7", audioData); urlString = directory + "8.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("8", audioData); urlString = directory + "9.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 900); _audioMap.put("9", audioData); urlString = directory + "10.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 750); _audioMap.put("10", audioData); urlString = directory + "11.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("11", audioData); urlString = directory + "12.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1250); _audioMap.put("12", audioData); urlString = directory + "13.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1250); _audioMap.put("13", audioData); urlString = directory + "14.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1250); _audioMap.put("14", audioData); urlString = directory + "15.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1250); _audioMap.put("15", audioData); urlString = directory + "16.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1250); _audioMap.put("16", audioData); urlString = directory + "17.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1500); _audioMap.put("17", audioData); urlString = directory + "18.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1250); _audioMap.put("18", audioData); urlString = directory + "19.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1250); _audioMap.put("19", audioData); urlString = directory + "20.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1250); _audioMap.put("20", audioData); urlString = directory + "30.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("30", audioData); urlString = directory + "40.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("40", audioData); urlString = directory + "50.au"; soundURL = new URL(urlString); audioData = new AudioData(soundURL, 1000); _audioMap.put("50", audioData); } catch (MalformedURLException malex) { System.err.println("Unknown URL: " + urlString); } return; } // Create the user interface but don't display it yet. private void _loadUI(Container pane) { String buttonText; String buttonCommand; int i; // Create the read-only phone number display. _numberDisplay = new JTextField(20); _numberDisplay.setEditable(false); _numberDisplay.setFont(new Font(null, Font.PLAIN, 10)); // Create the off-hook/on-hook button. _receiverButton = new JButton("Pick up receiver "); _receiverButton.setActionCommand("off hook"); _receiverButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { JButton button = (JButton) e.getSource(); String command = e.getActionCommand(); if (command.compareTo("off hook") == 0) { _fsm.OffHook(); } else if (command.compareTo("on hook") == 0) { _fsm.OnHook(); } else { System.out.println("Unknown receiver command: \"" + command + "\"."); } return; } } ); _receiverButton.setEnabled(true); // Create the dialing buttons. for (i = 0; i < 12; ++i) { buttonCommand = Integer.toString(i); if (i < 10) { buttonText = buttonCommand; } else if (i == 10) { buttonText = "*"; } else { buttonText = "#"; } _dialButtons[i] = new JButton(buttonText); _dialButtons[i].setActionCommand(buttonCommand); _dialButtons[i].addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { _fsm.Digit(e.getActionCommand()); } } ); _dialButtons[i].setEnabled(true); } // Layout the components. GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints gridConstraints = new GridBagConstraints(); pane.setLayout(gridbag); // Put the number display at the top. gridConstraints.insets = new Insets(2, 2, 2, 2); gridConstraints.anchor = GridBagConstraints.NORTH; gridConstraints.gridx = 0; gridConstraints.gridy = 0; gridConstraints.gridwidth = 3; gridConstraints.gridheight = 1; gridConstraints.ipadx = 5; gridConstraints.ipady = 5; gridConstraints.weighty = 1.0; gridbag.setConstraints(_numberDisplay, gridConstraints); pane.add(_numberDisplay); // The pick up/put down receiver button spans all columns // and two rows. It also sucks up all new verticle space. gridConstraints.anchor = GridBagConstraints.NORTH; gridConstraints.gridx = 0; gridConstraints.gridy = 1; gridConstraints.gridwidth = 3; gridConstraints.gridheight = 2; gridConstraints.ipadx = 5; gridConstraints.ipady = 5; gridConstraints.weighty = 1.0; gridbag.setConstraints(_receiverButton, gridConstraints); pane.add(_receiverButton); // Now put the dial buttons in place. gridConstraints.insets = new Insets(4, 4, 4, 4); gridConstraints.anchor = GridBagConstraints.CENTER; gridConstraints.gridx = 0; gridConstraints.gridy = 3; gridConstraints.gridwidth = 1; gridConstraints.gridheight = 1; gridConstraints.ipadx = 2; gridConstraints.ipady = 2; gridConstraints.weightx = 0.0; gridConstraints.weighty = 0.0; gridbag.setConstraints(_dialButtons[1], gridConstraints); pane.add(_dialButtons[1]); gridConstraints.anchor = GridBagConstraints.CENTER; gridConstraints.gridx = 1; gridConstraints.gridy = 3; gridConstraints.gridwidth = 1; gridConstraints.gridheight = 1; gridConstraints.ipadx = 2; gridConstraints.ipady = 2; gridConstraints.weightx = 0.0; gridConstraints.weighty = 0.0; gridbag.setConstraints(_dialButtons[2], gridConstraints); pane.add(_dialButtons[2]); gridConstraints.anchor = GridBagConstraints.CENTER; gridConstraints.gridx = 2; gridConstraints.gridy = 3; gridConstraints.gridwidth = 1; gridConstraints.gridheight = 1; gridConstraints.ipadx = 2; gridConstraints.ipady = 2; gridConstraints.weightx = 0.0; gridConstraints.weighty = 0.0; gridbag.setConstraints(_dialButtons[3], gridConstraints); pane.add(_dialButtons[3]); gridConstraints.anchor = GridBagConstraints.CENTER; gridConstraints.gridx = 0; gridConstraints.gridy = 4; gridConstraints.gridwidth = 1; gridConstraints.gridheight = 1; gridConstraints.ipadx = 2; gridConstraints.ipady = 2; gridConstraints.weightx = 0.0; gridConstraints.weighty = 0.0; gridbag.setConstraints(_dialButtons[4], gridConstraints); pane.add(_dialButtons[4]); gridConstraints.anchor = GridBagConstraints.CENTER; gridConstraints.gridx = 1; gridConstraints.gridy = 4; gridConstraints.gridwidth = 1; gridConstraints.gridheight = 1; gridConstraints.ipadx = 2; gridConstraints.ipady = 2; gridConstraints.weightx = 0.0; gridConstraints.weighty = 0.0; gridbag.setConstraints(_dialButtons[5], gridConstraints); pane.add(_dialButtons[5]); gridConstraints.anchor = GridBagConstraints.CENTER; gridConstraints.gridx = 2; gridConstraints.gridy = 4; gridConstraints.gridwidth = 1; gridConstraints.gridheight = 1; gridConstraints.ipadx = 2; gridConstraints.ipady = 2; gridConstraints.weightx = 0.0; gridConstraints.weighty = 0.0; gridbag.setConstraints(_dialButtons[6], gridConstraints); pane.add(_dialButtons[6]); gridConstraints.anchor = GridBagConstraints.CENTER; gridConstraints.gridx = 0; gridConstraints.gridy = 5; gridConstraints.gridwidth = 1; gridConstraints.gridheight = 1; gridConstraints.ipadx = 2; gridConstraints.ipady = 2; gridConstraints.weightx = 0.0; gridConstraints.weighty = 0.0; gridbag.setConstraints(_dialButtons[7], gridConstraints); pane.add(_dialButtons[7]); gridConstraints.anchor = GridBagConstraints.CENTER; gridConstraints.gridx = 1; gridConstraints.gridy = 5; gridConstraints.gridwidth = 1; gridConstraints.gridheight = 1; gridConstraints.ipadx = 2; gridConstraints.ipady = 2; gridConstraints.weightx = 0.0; gridConstraints.weighty = 0.0; gridbag.setConstraints(_dialButtons[8], gridConstraints); pane.add(_dialButtons[8]); gridConstraints.anchor = GridBagConstraints.CENTER; gridConstraints.gridx = 2; gridConstraints.gridy = 5; gridConstraints.gridwidth = 1; gridConstraints.gridheight = 1; gridConstraints.ipadx = 2; gridConstraints.ipady = 2; gridConstraints.weightx = 0.0; gridConstraints.weighty = 0.0; gridbag.setConstraints(_dialButtons[9], gridConstraints); pane.add(_dialButtons[9]); gridConstraints.anchor = GridBagConstraints.CENTER; gridConstraints.gridx = 0; gridConstraints.gridy = 6; gridConstraints.gridwidth = 1; gridConstraints.gridheight = 1; gridConstraints.ipadx = 2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -