Class 2 Intermediate Java 30-IT-397  

Jukebox Original Source

/*
 * Jukebox.java
 *
 * Created on February 23, 2002, 3:14 PM
 */

package PA2;

import java.util.*;

/**
 *
 * @author  default
 */
public class Jukebox extends javax.swing.JFrame {

    Song song;
    ArrayList songs = new ArrayList();
 
    /** Creates new form Jukebox */
    public Jukebox() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {//GEN-BEGIN:initComponents
        grpTypes = new javax.swing.ButtonGroup();
        centerPanel = new javax.swing.JPanel();
        innerCenterPanel = new javax.swing.JPanel();
        pnlSongInfo = new javax.swing.JPanel();
        lblSongTitle = new javax.swing.JLabel();
        txtTitle = new javax.swing.JTextField();
        lblArtist = new javax.swing.JLabel();
        txtArtist = new javax.swing.JTextField();
        lblAlbum = new javax.swing.JLabel();
        txtAlbum = new javax.swing.JTextField();
        lblType = new javax.swing.JLabel();
        pnlSongTypes = new javax.swing.JPanel();
        rdoDisco = new javax.swing.JRadioButton();
        rdoPop = new javax.swing.JRadioButton();
        rdoClassic = new javax.swing.JRadioButton();
        pnlList = new javax.swing.JPanel();
        pnlAdd = new javax.swing.JPanel();
        Add = new javax.swing.JButton();
        txtSongList = new javax.swing.JTextArea();
        northPanel = new javax.swing.JPanel();
        lblTitle = new javax.swing.JLabel();
        southPanel = new javax.swing.JPanel();
        btnRandom = new javax.swing.JButton();
        lblCurrent = new javax.swing.JLabel();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        centerPanel.setLayout(new java.awt.GridLayout(1, 1));

        innerCenterPanel.setLayout(new java.awt.GridLayout(2, 1));

        pnlSongInfo.setLayout(new java.awt.GridLayout(1, 2, 4, 4));

        lblSongTitle.setText("Song Title");
        pnlSongInfo.add(lblSongTitle);

        txtTitle.setColumns(15);
        pnlSongInfo.add(txtTitle);

        lblArtist.setText("Artist");
        pnlSongInfo.add(lblArtist);

        pnlSongInfo.add(txtArtist);

        lblAlbum.setText("Album");
        pnlSongInfo.add(lblAlbum);

        pnlSongInfo.add(txtAlbum);

        lblType.setText("Type");
        pnlSongInfo.add(lblType);

        rdoDisco.setText("Disco");
        grpTypes.add(rdoDisco);
        rdoDisco.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rdoDiscoActionPerformed(evt);
            }
        });

        pnlSongTypes.add(rdoDisco);

        rdoPop.setText("Pop");
        grpTypes.add(rdoPop);
        rdoPop.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rdoPopActionPerformed(evt);
            }
        });

        pnlSongTypes.add(rdoPop);

        rdoClassic.setText("Classic");
        grpTypes.add(rdoClassic);
        rdoClassic.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rdoClassicActionPerformed(evt);
            }
        });

        pnlSongTypes.add(rdoClassic);

        pnlSongInfo.add(pnlSongTypes);

        innerCenterPanel.add(pnlSongInfo);

        pnlList.setLayout(new java.awt.BorderLayout());

        Add.setText("Add");
        Add.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addActionPerformed(evt);
            }
        });

        pnlAdd.add(Add);

        pnlList.add(pnlAdd, java.awt.BorderLayout.NORTH);

        txtSongList.setColumns(30);
        txtSongList.setRows(5);
        pnlList.add(txtSongList, java.awt.BorderLayout.CENTER);

        innerCenterPanel.add(pnlList);

        centerPanel.add(innerCenterPanel);

        getContentPane().add(centerPanel, java.awt.BorderLayout.CENTER);

        lblTitle.setText("My Jukebox Thingie");
        northPanel.add(lblTitle);

        getContentPane().add(northPanel, java.awt.BorderLayout.NORTH);

        southPanel.setLayout(new java.awt.BorderLayout());

        btnRandom.setLabel("Select Random");
        btnRandom.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnRandomActionPerformed(evt);
            }
        });

        southPanel.add(btnRandom, java.awt.BorderLayout.WEST);

        lblCurrent.setText("Current Song: None");
        southPanel.add(lblCurrent, java.awt.BorderLayout.CENTER);

        getContentPane().add(southPanel, java.awt.BorderLayout.SOUTH);

        pack();
    }//GEN-END:initComponents

    private void rdoClassicActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoClassicActionPerformed
        // Add your handling code here:
        song = new Classic();
    }//GEN-LAST:event_rdoClassicActionPerformed

    private void rdoPopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoPopActionPerformed
        // Add your handling code here:
        song = new Pop();
    }//GEN-LAST:event_rdoPopActionPerformed

    private void rdoDiscoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoDiscoActionPerformed
        // Add your handling code here:
        song = new Disco();
    }//GEN-LAST:event_rdoDiscoActionPerformed

    private void btnRandomActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRandomActionPerformed
        // Add your handling code here:
        int songNumber = (int) (Math.random() * songs.size());
        Song selectedSong = (Song) songs.get(songNumber);
        lblCurrent.setText(selectedSong.toString());
    }//GEN-LAST:event_btnRandomActionPerformed

    private void addActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addActionPerformed
        // Add your handling code here:
        String artist = txtArtist.getText();
        String title = txtTitle.getText();
        String album = txtAlbum.getText();
        song.setInfo(artist, title, album);
        songs.add(song);
        txtSongList.setText(txtSongList.getText() + song.toString() + "\n");
        song = song.getNew();
        txtArtist.setText("");
        txtTitle.setText("");
        txtAlbum.setText("");
    }//GEN-LAST:event_addActionPerformed

    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
        System.exit(0);
    }//GEN-LAST:event_exitForm

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        new Jukebox().show();
    }
 

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JRadioButton rdoDisco;
    private javax.swing.JPanel pnlList;
    private javax.swing.JTextField txtAlbum;
    private javax.swing.JLabel lblArtist;
    private javax.swing.JButton btnRandom;
    private javax.swing.JLabel lblAlbum;
    private javax.swing.JPanel centerPanel;
    private javax.swing.JTextArea txtSongList;
    private javax.swing.JTextField txtArtist;
    private javax.swing.JPanel innerCenterPanel;
    private javax.swing.JTextField txtTitle;
    private javax.swing.JPanel northPanel;
    private javax.swing.JLabel lblTitle;
    private javax.swing.JPanel pnlSongInfo;
    private javax.swing.JRadioButton rdoClassic;
    private javax.swing.ButtonGroup grpTypes;
    private javax.swing.JPanel pnlAdd;
    private javax.swing.JButton Add;
    private javax.swing.JLabel lblCurrent;
    private javax.swing.JPanel southPanel;
    private javax.swing.JPanel pnlSongTypes;
    private javax.swing.JLabel lblSongTitle;
    private javax.swing.JLabel lblType;
    private javax.swing.JRadioButton rdoPop;
    // End of variables declaration//GEN-END:variables

}

/*
 * Song.java
 *
 * Created on February 23, 2002, 4:17 PM
 */

package PA2;

/**
 *
 * @author  default
 */
public abstract class Song {

    public String TYPE;
    private String title;
    private String album;
    private String artist;
 
 
    /** Creates a new instance of Song */
    public Song() {
    }
 
    public String toString() {
        return TYPE + "\t" + title + "\t" + artist + "\t" + album;
    }
 
    public void setArtist(String artist) {
        this.artist = artist;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
 
    public void setAlbum(String album) {
        this.album = album;
    }
 
    public void setInfo(String artist, String title, String album) {
        this.artist = artist;
        this.album = album;
        this.title = title;
    }
 
    public abstract Song getNew();
 

}
 

/*
 * Pop.java
 *
 * Created on February 23, 2002, 4:24 PM
 */

package PA2;

/**
 *
 * @author  default
 */
public class Pop extends Song {
 
    /** Creates a new instance of Pop */
    public Pop() {
        TYPE = "Pop";
    }

    public Song getNew() {
        return new Pop();
    }
 
}
 

/*
 * Disco.java
 *
 * Created on February 23, 2002, 4:20 PM
 */

package PA2;

/**
 *
 * @author  default
 */
public class Disco extends Song {

 
    /** Creates a new instance of Disco */
    public Disco() {
        TYPE = "Disco";
    }
 
    public Song getNew() {
        return new Disco();
    }

}

/*
 * Classic.java
 *
 * Created on February 23, 2002, 4:28 PM
 */

package PA2;

/**
 *
 * @author  default
 */
public class Classic extends Song {

    /** Creates a new instance of Classic */
    public Classic() {
        TYPE = "Classic";
    }

    public Song getNew() {
        return new Classic();
    }
 
}

Back

Created by:  Brandan Jones December 17, 2001