Witam,
Dopiero zaczynam programowanie i mam na zadanie napisać prosty odtwarzacz MP3.
Napisałem sobie GUI i proszę o wskazówki jak napisać ActionPerformed. W tym momencie mam dwie klasy jedna Frame która rysuje GUI, druga w której jest funkcja main.
Czy do Action Listener'a utworzyć osobną klasę czy pisać to w klasie Test?
To samo pytanie odnośnie odtwarzania.
Będę wdzięczny za wszelkie uwagi dotyczące kodu/
import javax.swing.*;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
public class MyFrame extends JFrame implements ActionListener{
int SPACEX = 5;
private static final long serialVersionUID = 1L;
protected JButton playButton, stopButton, nextButton,
prevButton, pauseButton, roundButton, randomButton;
protected JProgressBar bar;
public MyFrame(){
super("Odtwarzacz MP3");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 200);
setLocation(200,200);
setLayout(new FlowLayout());
setResizable(false);
getContentPane().setBackground( Color.WHITE );
//pusta przestrzeń
add(Box.createRigidArea(new Dimension(400,5)));
add(Box.createRigidArea(new Dimension(SPACEX,0)));
prevButton = new JButton(new ImageIcon("images/rewind.png"));
prevButton.setBorder(BorderFactory.createEmptyBorder());
prevButton.setContentAreaFilled(false);
add(prevButton);
add(Box.createRigidArea(new Dimension(SPACEX,0)));
playButton = new JButton(new ImageIcon("images/play.png"));
playButton.setBorder(BorderFactory.createEmptyBorder());
playButton.setContentAreaFilled(false);
add(playButton);
add(Box.createRigidArea(new Dimension(SPACEX,0)));
pauseButton = new JButton(new ImageIcon("images/pause.png"));
pauseButton.setBorder(BorderFactory.createEmptyBorder());
pauseButton.setContentAreaFilled(false);
add(pauseButton);
add(Box.createRigidArea(new Dimension(SPACEX,0)));
stopButton = new JButton(new ImageIcon("images/stop.png"));
stopButton.setBorder(BorderFactory.createEmptyBorder());
stopButton.setContentAreaFilled(false);
add(stopButton);
add(Box.createRigidArea(new Dimension(SPACEX,0)));
nextButton = new JButton(new ImageIcon("images/forward.png"));
nextButton.setBorder(BorderFactory.createEmptyBorder());
nextButton.setContentAreaFilled(false);
add(nextButton);
add(Box.createRigidArea(new Dimension(SPACEX-3,0)));
randomButton = new JButton(new ImageIcon("images/random.png"));
randomButton.setBorder(BorderFactory.createEmptyBorder());
randomButton.setContentAreaFilled(false);
add(randomButton);
JLabel sliderLabel = new JLabel(" Głośność ", JLabel.CENTER);
JSlider volume = new JSlider();
volume.setValue(100);
volume.setPreferredSize(new Dimension(230,20));
JPanel volume_panel = new JPanel();
volume_panel.add(sliderLabel);
volume_panel.add(volume);
volume_panel.setBackground( Color.WHITE );
add(volume_panel);
roundButton = new JButton(new ImageIcon("images/round.png"));
roundButton.setBorder(BorderFactory.createEmptyBorder());
roundButton.setContentAreaFilled(false);
add(roundButton);
bar = new JProgressBar();
bar.setValue(50);
bar.setStringPainted(true);
bar.setPreferredSize(new Dimension(350,20));
bar.setString(" Tutuł odtwarzanego utworu ");
add(bar);
JMenuBar menuBar;
JMenu menu;
JMenuItem menuItem;
JCheckBoxMenuItem cbMenuItem;
//Tworzenie paska narzędzi
menuBar = new JMenuBar();
//Menu Plik
menu = new JMenu("Plik");
menuBar.add(menu);
menuItem = new JMenuItem("Otwórz plik");
menuItem.setActionCommand("Open");
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_O, ActionEvent.CTRL_MASK));
menuItem.addActionListener(this);
menu.add(menuItem);
menu.addSeparator();
menuItem = new JMenuItem("Nowa playlista");
menuItem.setActionCommand("New_Playlist");
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_N, ActionEvent.CTRL_MASK));
menuItem.addActionListener(this);
menu.add(menuItem);
menu.addSeparator();
menuItem = new JMenuItem("Zakończ");
menuItem.setActionCommand("Close");
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_4, ActionEvent.ALT_MASK));
menuItem.addActionListener(this);
menu.add(menuItem);
//Menu Odtwarzanie.
menu = new JMenu("Odtwarzanie");
menuBar.add(menu);
menuItem = new JMenuItem("Odtwarzaj");
menuItem.setActionCommand("Play");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, 0));
menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem("Pauza");
menuItem.setActionCommand("Pause");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, 0));
menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem("Stop");
menuItem.setActionCommand("Stop");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, 0));
menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem("Następny");
menuItem.setActionCommand("Next");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, 0));
menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem("Poprzedni");
menuItem.setActionCommand("Prev");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, 0));
menuItem.addActionListener(this);
menu.add(menuItem);
menu.addSeparator();
cbMenuItem = new JCheckBoxMenuItem("Odtwarzanie losowe");
menuItem.setActionCommand("Random");
menuItem.addActionListener(this);
menu.add(cbMenuItem);
cbMenuItem = new JCheckBoxMenuItem("Zapętlanie");
menuItem.setActionCommand("Round");
menuItem.addActionListener(this);
menu.add(cbMenuItem);
setJMenuBar(menuBar);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Play")) {
bar.setValue(100);
}
if(e.getActionCommand().equals("Close")) {
System.exit(0);
}
}
}
import java.awt.EventQueue;
public class Test {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new MyFrame();
}
});
}
}