📄 playerpanel.java
字号:
controlsPanel.add(buttonsPanel, BorderLayout.CENTER); addControlsPanelActionListeners(); return controlsPanel; } /** * Creates a JButton with the given label, which is also the tooltip * text, and the given mnemonic. * * @param label the button label, which is also the tooltip text * @param mnemonic mnemonic for the button * * @return a JButton */ private JButton createJButton(String label, int mnemonic) { JButton button = new JButton(label); button.setToolTipText(label); button.setMnemonic(mnemonic); setControlColors(button); return button; } /** * Creates the JPanel where the volume and speaking rate JSliders are. */ private JPanel createLeftSliderPanel() { // create the sliders playerModel.setVolume(initialVolume); volumeSlider = new JSlider(JSlider.VERTICAL, 0, 10, initialVolume); int speakingRate = (int) playerModel.getSpeakingRate(); if (speakingRate == -1) { speakingRate = 0; } speedSlider = new JSlider(JSlider.VERTICAL, 0, 400, 0); JPanel volumePanel = createSliderPanel (volumeSlider, "Volume Control", 1, 5, "Volume", volumeMnemonic); JPanel speedPanel = createSliderPanel (speedSlider, "Speed Control", 50, 100, "Words/min", wordsPerMinMnemonic); JPanel sliderPanel = new JPanel(new FlowLayout()); sliderPanel.add(volumePanel); sliderPanel.add(speedPanel); addLeftSliderPanelListeners(); return sliderPanel; } /** * Creates the JPanel where the pitch and range JSliders are. */ private JPanel createRightSliderPanel() { // create the sliders pitchSlider = new JSlider(JSlider.VERTICAL, 50, 200, 50); rangeSlider = new JSlider(JSlider.VERTICAL, 0, 50, 0); JPanel pitchPanel = createSliderPanel (pitchSlider, "Pitch Control", 25, 50, "Pitch/Hz", pitchMnemonic); JPanel rangePanel = createSliderPanel (rangeSlider, "Range Control", 5, 10, "Range", rangeMnemonic); JPanel sliderPanel = new JPanel(); sliderPanel.setLayout(new FlowLayout()); sliderPanel.add(pitchPanel); sliderPanel.add(rangePanel); addRightSliderPanelListeners(); return sliderPanel; } /** * Adds ActionListeners for the JSliders. */ private void addLeftSliderPanelListeners() { volumeSlider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent ce) { if (playerModel.setVolume ((float) volumeSlider.getValue()) == false) { volumeSlider.setValue((int) playerModel.getVolume()); } } }); speedSlider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent ce) { if (playerModel.setSpeakingRate ((float) speedSlider.getValue()) == false) { speedSlider.setValue((int) playerModel.getSpeakingRate()); } } }); } /** * Adds ActionListeners for the JSliders. */ private void addRightSliderPanelListeners() { pitchSlider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (playerModel.setPitch ((float) pitchSlider.getValue()) == false) { pitchSlider.setValue((int) playerModel.getPitch()); } } }); rangeSlider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (playerModel.setRange ((float) rangeSlider.getValue()) == false) { rangeSlider.setValue((int) playerModel.getRange()); } } }); } /** * Updates all the Sliders with values from the PlayerModel. */ private void updateSliders() { int volume = (int) playerModel.getVolume(); if (volume > -1) { volumeSlider.setValue(volume); } int rate = (int) playerModel.getSpeakingRate(); if (rate > -1) { speedSlider.setValue(rate); } int pitch = (int) playerModel.getPitch(); if (pitch > -1) { pitchSlider.setValue(pitch); } int range = (int) playerModel.getRange(); if (range > -1) { rangeSlider.setValue(range); } } /** * Creates a JPanel that contains the given JSlider, with the * given attributes. * * @param slider the JSlider * @param toolTipText the text for the tooltip * @param minorTickSpacing the spacing between minor ticks * @param majorTickSpacing the spacing between major ticks * @param title the title of the JSlider */ private JPanel createSliderPanel(JSlider slider, String toolTipText, int minorTickSpacing, int majorTickSpacing, String title, char mnemonic) { JPanel sliderPanel = new JPanel(new BorderLayout()); slider.setSize(getSize().width/2 - border, slider.getSize().height); slider.putClientProperty("JSlider.isFilled", Boolean.TRUE); slider.setMinorTickSpacing(minorTickSpacing); slider.setMajorTickSpacing(majorTickSpacing); slider.setPaintTicks(true); slider.setPaintLabels(true); slider.setToolTipText(toolTipText); JLabel leftLabel = new JLabel(title); leftLabel.setForeground(foregroundColor); leftLabel.setDisplayedMnemonic(mnemonic); leftLabel.setLabelFor(slider); sliderPanel.add(leftLabel, BorderLayout.NORTH); sliderPanel.add(slider, BorderLayout.CENTER); return sliderPanel; } /** * Adds ActionListeners to all the buttons */ private void addControlsPanelActionListeners() { playButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int[] selectedIndices = speakablesList.getSelectedIndices(); for (int i = 0; i < selectedIndices.length; i++) { if (selectedIndices[i] != -1) { playerModel.play(selectedIndices[i]); } } } }); pauseButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (playerModel.isPaused()) { playerModel.resume(); } else { playerModel.pause(); } } }); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { playerModel.cancel(); } }); stopButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { playerModel.stop(); pauseButton.setEnabled(true); } }); } /** * Creates the text JPanel is where the user enters text to be read. * * @return the JPanel with the textArea for text input */ private JPanel createTextPanel() { textArea = new JTextArea(); textArea.requestFocusInWindow(); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); JScrollPane textScrollPane = new JScrollPane(textArea); speakTextButton = createJButton("Speak Text", speakMnemonic); speakJSMLButton = createJButton("Speak JSML", speakJSMLMnemonic); clearTextButton = createJButton("Clear", clearMnemonic); BorderLayout borderLayout = new BorderLayout(); JPanel textPanel = new JPanel(borderLayout); textPanel.setSize(width - border * 2, textPanel.getSize().height); JPanel buttonsPanel = new JPanel(); buttonsPanel.add(speakTextButton); buttonsPanel.add(speakJSMLButton); buttonsPanel.add(clearTextButton); TitledBorder titledBorder = new TitledBorder("Enter text:"); JLabel titleLabel = new JLabel("Enter text:"); titleLabel.setDisplayedMnemonic(textMnemonic); titleLabel.setLabelFor(textArea); EtchedBorder border = new EtchedBorder(Color.WHITE, Color.BLACK); textPanel.setBorder(border); textPanel.add(titleLabel, BorderLayout.NORTH); textPanel.add(textScrollPane, BorderLayout.CENTER); textPanel.add(buttonsPanel, BorderLayout.SOUTH); addTextPanelActionListeners(); return textPanel; } /** * Adds ActionListeners to the buttons on the text panel. */ private void addTextPanelActionListeners() { clearTextButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { textArea.setText(""); } }); speakTextButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String inputText = textArea.getText(); if (inputText.length() > 0) { Playable textPlayable = Playable.createTextPlayable(inputText); playerModel.addPlayable(textPlayable); speakablesList.setSelectedValue(textPlayable, true); playerModel.play(textPlayable); } } }); speakJSMLButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String inputText = textArea.getText(); if (inputText.length() > 0) { Playable jsmlPlayable = Playable.createJSMLPlayable(inputText); playerModel.addPlayable(jsmlPlayable); speakablesList.setSelectedValue(jsmlPlayable, true); playerModel.play(jsmlPlayable); } } }); } /** * Sets the given control JComponent to the application defined color. * * @param component the JComponent to set color */ private void setControlColors(JComponent component) { component.setBackground(controlColor); } /** * Returns the Playables JList. * * @return the Playables JList */ public JList getPlayList() { return speakablesList; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -