I have developed a JApplet program that loads dvds into array and displays them in a textarea in a sorted format. i have created a class called dvd that loads all the content to array dvd. my class uses implements comparable to sort.
my problem is i cant insert/add into the array and still sort the element in the array
i want to know how do i insert into the array dvdz and still sort the newly inserted element without affecting the sequence.
here's my program code:
//////////////////////////////////////////////////////////////////
import java.io.*import java.util.*import java.awt.*import java.awt.event.*import javax.swing.*import java.util.Collectionsimport java.util.ArrayListimport java.util.Scannerimport java.util.ListIterator
public class dvdMain extends JFrame implements ActionListener, ItemListener
{
private JLabel lblDvdSystemBanner, lblSelectOptions,lblMovieTitle,lblYearOfRelease,lblAgeClassification,lblMovieGenre,lblMovieTime,lblPrice private TextField txtMovieTitle, txtYearOfRelease, txtAgeClassification, txtMovieGenre,txtMovieTime, txtPrice private JButton btnBack, btnBack2, btnAdd private JTextArea txaDisplay private JPanel mainPanel,disPanel,dPanel,rdbPanel,addPanel,txtAreaPanel private JRadioButton rdbLoad, rdbDisplay, rdbAdd, rdbSave, rdbLFile, rdbExit private Font msgF = new Font("Algerian",Font.BOLD,23)
private static int s = 0
private int width, height
PrintWriter outputStream
Container con = getContentPane()
dvdClass[] dvds = new dvdClass[99]
dvdClass dvd1 = new dvdClass("Jaws",1996,"PG 13","Thriller",89) dvdClass dvd2 = new dvdClass("Titanic",1997,"PG 13","Drama",90) dvdClass dvd3 = new dvdClass("Be cool",2008,"PG 13","comedy",89) dvdClass dvd4 = new dvdClass("Hitch",2005,"PG 13","Comedy",90)
dvdClass[] dvdz = new dvdClass[] {dvd1, dvd2, dvd3,dvd4}
public static final int H = 400 public static final int W = 390
public static void main(String [] args)
{
dvdMain tb = new dvdMain() tb.setBounds(340,120,550,500)
for(int i=0 System.out.println("loading...") tb.setSize(750,400) tb.setVisible(true)
}
public dvdMain()
{
setTitle("Dvd Records") setSize(450,200) setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
dvdMain.setDefaultLookAndFeelDecorated(true)
mainPanel = new JPanel() mainPanel.setLayout(new FlowLayout())
disPanel = new JPanel() disPanel.setLayout(new GridLayout(2,1))
dPanel = new JPanel() dPanel.setLayout(new GridLayout(2,1))
lblDvdSystemBanner = new JLabel("DVD Booking System") lblDvdSystemBanner.setFont(msgF) lblSelectOptions = new JLabel("Please select one option from the list")
dPanel.add(lblDvdSystemBanner) dPanel.add(lblSelectOptions)
disPanel.add(dPanel)
mainPanel.add(disPanel,"North")
try
{
outputStream = new PrintWriter(new FileOutputStream("dvds.txt",true))
}
catch(FileNotFoundException e)
{
System.err.println("File not found") System.exit(1) }
ButtonGroup rg = new ButtonGroup()
rdbLoad = new JRadioButton("Load DVD's") rdbLoad.addItemListener(this)
rdbDisplay = new JRadioButton("Display DVD's") rdbDisplay.addItemListener(this) rdbDisplay.setEnabled(false)
rdbAdd = new JRadioButton("Add a DVD(s)") rdbAdd.addItemListener(this) rdbAdd.setEnabled(false)
rdbSave = new JRadioButton("Save DVD(s)") rdbSave.addItemListener(this) rdbSave.setEnabled(false)
rdbExit = new JRadioButton("Exit") rdbExit.addItemListener(this)
rg = new ButtonGroup() rg.add(rdbLoad) rg.add(rdbDisplay) rg.add(rdbAdd) rg.add(rdbSave) rg.add(rdbExit)
rdbPanel = new JPanel() rdbPanel.setLayout(new GridLayout(6,1))
rdbPanel.add(rdbLoad) rdbPanel.add(rdbDisplay) rdbPanel.add(rdbAdd) rdbPanel.add(rdbSave) rdbPanel.add(rdbExit)
disPanel.add(rdbPanel)
lblMovieTitle = new JLabel("Enter movie title: ") lblYearOfRelease =new JLabel("Enter year of release: ") lblAgeClassification =new JLabel("Enter age classification: ") lblMovieGenre =new JLabel("Enter movie genre: ") lblMovieTime =new JLabel("Enter movie playing time in minutes: ")
txtMovieTitle = new TextField(20) txtYearOfRelease = new TextField(20) txtAgeClassification = new TextField(20) txtMovieGenre = new TextField(20) txtMovieTime = new TextField(20)
addPanel = new JPanel() addPanel.setLayout(new GridLayout(7,2,10,15))
addPanel.add(lblMovieTitle) addPanel.add(txtMovieTitle) addPanel.add(lblYearOfRelease) addPanel.add(txtYearOfRelease) addPanel.add(lblAgeClassification) addPanel.add(txtAgeClassification) addPanel.add(lblMovieGenre) addPanel.add(txtMovieGenre) addPanel.add(lblMovieTime) addPanel.add(txtMovieTime)
btnBack = new JButton("Back") btnBack.addActionListener(this)
btnAdd = new JButton("Add") btnAdd.addActionListener(this)
btnBack2 = new JButton("Back") btnBack2.addActionListener(this)
addPanel.add(btnBack) addPanel.add(btnAdd)
txtAreaPanel = new JPanel() txtAreaPanel.setLayout(new BorderLayout())
txaDisplay = new JTextArea(20,20) txaDisplay.setBackground(Color.WHITE) txtAreaPanel.add(txaDisplay,BorderLayout.NORTH) txtAreaPanel.add(btnBack2,BorderLayout.SOUTH)
addPanel.setVisible(false) txtAreaPanel.setVisible(false) mainPanel.setVisible(true)
mainPanel.add(txtAreaPanel) mainPanel.add(addPanel)
setContentPane(mainPanel) }
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("Back"))
back() else if (e.getActionCommand().equals("Add"))
addDvd(dvdz) }
public void itemStateChanged(ItemEvent e)
{
Object source = e.getSource() int select = e.getStateChange()
if (source == rdbLoad)
load(dvds) else if(source == rdbDisplay)
display(dvds) else if(source == rdbAdd)
add(dvds) else if(source == rdbSave)
save(dvds) else if(source == rdbExit)
exit() }
public void load(dvdClass[] dvds)
{
rdbAdd.setEnabled(true) rdbSave.setEnabled(true) rdbDisplay.setEnabled(true) rdbLoad.setEnabled(false)
disPanel.setVisible(true) txtAreaPanel.setVisible(false) addPanel.setVisible(false)
clearArray()
s = 3
}
public void add(dvdClass[] dvds)
{
disPanel.setVisible(false) txtAreaPanel.setVisible(false) addPanel.setVisible(true) }
public void display(dvdClass[] dvds)
{
addPanel.setVisible(false) disPanel.setVisible(false) txtAreaPanel.setVisible(true)
txaDisplay.setText("")
txaDisplay.append(" "+ "MOVIE TITLE"+"\t\t" + "YEAR OF RELEASE" +"\t" + "AGE CLASSIFICATION" + "\t" + "GENRE"+ "\t" + "PLAYING TIME\t\n")
Arrays.sort(dvdz)
for (dvdClass dvd : dvdz)
txaDisplay.append("\n"+ dvd.toString())
}
public void save(dvdClass[] dvds)
{
addPanel.setVisible(false) disPanel.setVisible(true) txtAreaPanel.setVisible(false)
for(int i=0 outputStream.println(dvdz[i])
outputStream.close()
JOptionPane.showMessageDialog(null,"All Book's object in the array,\n has been save to text file")
}
public void exit()
{
addPanel.setVisible(false) disPanel.setVisible(false) txtAreaPanel.setVisible(false) System.exit(0) }
public void back()
{
disPanel.setVisible(true) txtAreaPanel.setVisible(false) addPanel.setVisible(false) }
public void addDvd(dvdClass[] dvd5)
{
if(validateM())
{
String t, a, g int y,ti
t = txtMovieTitle.getText() a = txtAgeClassification.getText() g = txtMovieGenre.getText()
t = t.replace(" ","") g = g.replace(" ","") a = a.replace(" ","")
ti = Integer.parseInt(txtMovieTime.getText()) y = Integer.parseInt(txtYearOfRelease.getText())
dvdz[4]= new dvdClass(t,y,a,g,ti)
s += 1
txtMovieTitle.setText("") txtYearOfRelease.setText("") txtAgeClassification.setText("") txtMovieGenre.setText("") txtMovieTime.setText("")
JOptionPane.showMessageDialog(null,"ADD \n" + t + " " + y + " " + a + " " + g + " " + y +" "+ti+ "\n has been added in the end of the array")
}
}
public int getArrayIndex(dvdClass[] dvds)
{
dvdClass s
int i=0 int count=0
String fileName = "Bks.txt" Scanner fromFile = null
try
{
fromFile = new Scanner(new File(fileName))
}
catch(FileNotFoundException e)
{
System.out.println("Error opening the file " + "fileName") System.exit(0) }
while(fromFile.hasNext())
{
count++ }
return i }
public void clearArray()
{
for(int i=0 dvds[i] = null }
public boolean validateM()
{
boolean bRet = true String strErrMsg = "" String strTitle = txtMovieTitle.getText() String strYear = txtYearOfRelease.getText() String strAgeClass = txtAgeClassification.getText() String strGenre = txtMovieGenre.getText() String strTime = txtMovieTime.getText()
if(strTitle == null || strTitle.length() < 1 )
{
strErrMsg = "The movie title field connot be empty." bRet = false }
else if(strAgeClass == null || strAgeClass.length() < 1)
{
strErrMsg = "The age classification field connot be empty." bRet = false }
else if(strGenre == null || strGenre.length() < 1)
{
strErrMsg = "The genre field connot be empty." bRet = false }
else
{
try
{
int yearR = Integer.parseInt(strYear)
try
{
int mTime =Integer.parseInt(strTime) }
catch(NumberFormatException ex)
{
strErrMsg = "The time field only acceps digits" bRet = false }
}
catch(NumberFormatException ex)
{
strErrMsg = "The year field only accepts digits" bRet = false }
}
if(!bRet)
JOptionPane.showMessageDialog(null,strErrMsg)
return bRet
}
}
///////////////////////////// DVD CLASS //////
public class dvdClass implements Comparable
{
private String movieTitle;
private String movieAgeClassification;
private String movieGenre;
private int movieYearOfRelease;
private int moviePlayingTime;
public dvdClass()
{
movieTitle = "";
movieAgeClassification = "";
movieGenre = "";
movieYearOfRelease = 0;
moviePlayingTime = 0;
}
public dvdClass(String title,int year,String age,String genre, int time)
{
movieTitle = title;
movieAgeClassification = age;
movieGenre = genre;
movieYearOfRelease = year;
moviePlayingTime = time;
}
public String getMovieTitle()
{
return movieTitle;
}
public void setMovieTitle(String t)
{
movieTitle = t;
}
public int getMovieYearOfRelease()
{
return movieYearOfRelease;
}
public void setYearOfRelease(int y)
{
movieYearOfRelease = y;
}
public String getMovieAgeClassification()
{
return movieAgeClassification;
}
public void setMovieAgeClassification(String a)
{
movieAgeClassification = a;
}
public String getMovieGenre()
{
return movieGenre;
}
public void setMovieGenre(String g)
{
movieGenre = g;
}
public int getMoviePlayingTime()
{
return moviePlayingTime;
}
public void setMoviePlayingTime(int pt)
{
moviePlayingTime = pt;
}
public String toString()
{
return movieTitle + "\t\t" + movieYearOfRelease + "\t\t" + movieAgeClassification + "\t\t" + movieGenre + "\t" + moviePlayingTime;
}
public int compareTo(Object obj)
{
if (obj instanceof dvdClass)
{
dvdClass dvd = (dvdClass) obj;
if (this.movieYearOfRelease < dvd.getMovieYearOfRelease())
return 1;
else if (this.movieYearOfRelease > dvd.getMovieYearOfRelease())
return -1;
else
return(movieTitle.charAt(movieTitle.length() - 1) - movieTitle.charAt(movieTitle.length() - 1) );
}
return 0;
}
}