dante27
Apr 24th, 2005, 06:18 PM
hello,
I am working on a program for my Advaced java class and was wondering if anyone here could help I have most of it done but I am having problems creating a sort for the three menu items and a serach for the dept and salary fields the sort button works but i would like it to be a menu but not sure how to go about it. I am not sure how to go about doing it.
any help would be apprecitated
this is the program that i need to write:
Create an application that presents the following options to the user:
Add records - adds records to a list of records
Sort records - sorts the records on one of three fields(the program must be able to sort on all three sort keys)
Search records - retrieves a record using any one of the keys. On multiple occurrences display more than one record.
The methods must be in a list class.
Provide handlers that support the add, sort and search features as well as exception handling for bad input.
The sort methods should run in their own thread.
Use GUI components that make the application simple for the user.
Employee Record layout :
name String
dept int
salary double
thank you
********************************************************
here is the code that I have done so far:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Employee
{
String name;
int dept;
double salary;
public Employee(String n,int d,double sal)
{
name=n;
dept=d;
salary=sal;
}
public String toString()
{
return name+" "+dept+" "+salary;
}
}
class EmployeeList
{
int next=0;
Employee list[]=new Employee[3];
public EmployeeList()
{
}
public void sortByName()
{
for(int pass =1;pass<next;pass++)
for(int element=0;element<next-1;element++)
{
try{
Thread.sleep(5000);
}catch(InterruptedException ex){}
if(list[element].name.compareTo(list[element+1].name)>0)
swap(element,element+1);
}
}
public void swap(int first, int second)
{
Employee hold;
hold=list[first];
list[first]=list[second];
list[second]=hold;
}
public String searchOnName(String key)
{
String ret="";
for(int i=0;i<next;i++)
if(list[i].name.equals(key))
return list[i].toString();
return ret;
}
//Overload methods so developers
//can use the methods easier
//the argument type must differ
public String search(double key)
{
String ret="";
for(int i=0;i<next;i++)
if(list[i].salary==key)
return list[i].toString();
return ret;
}
public String search(int key)
{
String ret="";
for(int i=0;i<next;i++)
if(list[i].dept==key)
return list[i].toString();
return ret;
}
}
public class MidtermAppWithSort2 extends JFrame
{
EmployeeList empList=new EmployeeList();
Container container;
JMenuBar bar;
JMenu searchMenu,sortMenu;
JMenuItem nameItem,deptItem,salaryItem;
JMenuItem nameItem2,deptItem2,salaryItem2;
JLabel nameLabel,deptLabel,salaryLabel;
JTextField nameText,deptText,salaryText;
JTextArea area;
JButton submit,display,sort;
JPanel northPanel,southPanel;
public MidtermAppWithSort2()
{
container=getContentPane();
//container.setLayout(new FlowLayout());
sortMenu=new JMenu("Sort");
searchMenu=new JMenu("Search");
nameItem=new JMenuItem("Name");
deptItem=new JMenuItem("Dept");
salaryItem=new JMenuItem("Salary");
nameItem2=new JMenuItem("Name");
deptItem2=new JMenuItem("Dept");
salaryItem2=new JMenuItem("Salary");
//add items to the menu
searchMenu.add(nameItem);
searchMenu.add(deptItem);
searchMenu.add(salaryItem);
sortMenu.add(nameItem2);
sortMenu.add(deptItem2);
sortMenu.add(salaryItem2);
//add the menu to menubar
bar=new JMenuBar();
bar.add(searchMenu);
bar.add(sortMenu);
//set the bar
setJMenuBar(bar);
sort=new JButton("SortOnName");
area=new JTextArea(30,20);
submit=new JButton("Submit");
display=new JButton("Display");
ButtonHandler bh=new ButtonHandler();
MenuHandler mh=new MenuHandler();
nameItem.addActionListener(mh);
submit.addActionListener(bh);
display.addActionListener(bh);
nameLabel=new JLabel("NAME");
nameText=new JTextField(10);
deptLabel=new JLabel("DEPT");
deptText=new JTextField(10);
salaryLabel=new JLabel("SALARY");
salaryText=new JTextField(10);
//Create a panel and place it in the north border
northPanel=new JPanel();
northPanel.add(nameLabel);
northPanel.add(nameText);
northPanel.add(deptLabel);
northPanel.add(deptText);
northPanel.add(salaryLabel);
northPanel.add(salaryText);
northPanel.add(sort);
sort.addActionListener(bh);
container.add(northPanel,BorderLayout.NORTH);
//container.add(label);
//container.add(text);
container.add(area,BorderLayout.CENTER);
//Create a panel and place it in the south border
southPanel=new JPanel();
southPanel.setLayout(new GridLayout(1,2));
southPanel.add(submit);
southPanel.add(display);
container.add(southPanel,BorderLayout.SOUTH);
//container.add(submit);
//container.add(display);
setSize(200,300);
show();
}
public static void main(String s[])
{
MidtermAppWithSort2 app=new MidtermAppWithSort2();
}
//inner class
private class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==submit)
{
String name=nameText.getText();
String dept=deptText.getText();
String salary=salaryText.getText();
if(empList.next<3)
{
empList.list[empList.next++]=new Employee(name,
Integer.parseInt(dept),Double.parseDouble(salary));
}else
area.append("No more room\n");
}
if(e.getSource()==display)
//area.append("Display clicked\n");
for(int i=0;i<empList.next;i++)
area.append(empList.list[i].toString()+"\n");
//sort by name
if(e.getSource()==sort){
empList.sortByName();
SortThread thread=new SortThread(empList);
thread.start();
}
}//end of actionPerformed
}//end of ButtonHandler class
//inner class
private class MenuHandler implements ActionListener
{
public void actionPerformed(ActionEvent ev)
{
if(ev.getSource()==nameItem)
{
String retValue=empList.searchOnName(
nameText.getText());
if(!retValue.equals(""))
area.append(retValue+"\n");
else
area.append("Not found\n");
}
}
}
}//end of GUIApp class
class SortThread extends Thread
{
EmployeeList list;
public SortThread(EmployeeList l)
{
list=l;
}
public void run()
{
list.sortByName();
}
}//end class
********************************************************
I am working on a program for my Advaced java class and was wondering if anyone here could help I have most of it done but I am having problems creating a sort for the three menu items and a serach for the dept and salary fields the sort button works but i would like it to be a menu but not sure how to go about it. I am not sure how to go about doing it.
any help would be apprecitated
this is the program that i need to write:
Create an application that presents the following options to the user:
Add records - adds records to a list of records
Sort records - sorts the records on one of three fields(the program must be able to sort on all three sort keys)
Search records - retrieves a record using any one of the keys. On multiple occurrences display more than one record.
The methods must be in a list class.
Provide handlers that support the add, sort and search features as well as exception handling for bad input.
The sort methods should run in their own thread.
Use GUI components that make the application simple for the user.
Employee Record layout :
name String
dept int
salary double
thank you
********************************************************
here is the code that I have done so far:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Employee
{
String name;
int dept;
double salary;
public Employee(String n,int d,double sal)
{
name=n;
dept=d;
salary=sal;
}
public String toString()
{
return name+" "+dept+" "+salary;
}
}
class EmployeeList
{
int next=0;
Employee list[]=new Employee[3];
public EmployeeList()
{
}
public void sortByName()
{
for(int pass =1;pass<next;pass++)
for(int element=0;element<next-1;element++)
{
try{
Thread.sleep(5000);
}catch(InterruptedException ex){}
if(list[element].name.compareTo(list[element+1].name)>0)
swap(element,element+1);
}
}
public void swap(int first, int second)
{
Employee hold;
hold=list[first];
list[first]=list[second];
list[second]=hold;
}
public String searchOnName(String key)
{
String ret="";
for(int i=0;i<next;i++)
if(list[i].name.equals(key))
return list[i].toString();
return ret;
}
//Overload methods so developers
//can use the methods easier
//the argument type must differ
public String search(double key)
{
String ret="";
for(int i=0;i<next;i++)
if(list[i].salary==key)
return list[i].toString();
return ret;
}
public String search(int key)
{
String ret="";
for(int i=0;i<next;i++)
if(list[i].dept==key)
return list[i].toString();
return ret;
}
}
public class MidtermAppWithSort2 extends JFrame
{
EmployeeList empList=new EmployeeList();
Container container;
JMenuBar bar;
JMenu searchMenu,sortMenu;
JMenuItem nameItem,deptItem,salaryItem;
JMenuItem nameItem2,deptItem2,salaryItem2;
JLabel nameLabel,deptLabel,salaryLabel;
JTextField nameText,deptText,salaryText;
JTextArea area;
JButton submit,display,sort;
JPanel northPanel,southPanel;
public MidtermAppWithSort2()
{
container=getContentPane();
//container.setLayout(new FlowLayout());
sortMenu=new JMenu("Sort");
searchMenu=new JMenu("Search");
nameItem=new JMenuItem("Name");
deptItem=new JMenuItem("Dept");
salaryItem=new JMenuItem("Salary");
nameItem2=new JMenuItem("Name");
deptItem2=new JMenuItem("Dept");
salaryItem2=new JMenuItem("Salary");
//add items to the menu
searchMenu.add(nameItem);
searchMenu.add(deptItem);
searchMenu.add(salaryItem);
sortMenu.add(nameItem2);
sortMenu.add(deptItem2);
sortMenu.add(salaryItem2);
//add the menu to menubar
bar=new JMenuBar();
bar.add(searchMenu);
bar.add(sortMenu);
//set the bar
setJMenuBar(bar);
sort=new JButton("SortOnName");
area=new JTextArea(30,20);
submit=new JButton("Submit");
display=new JButton("Display");
ButtonHandler bh=new ButtonHandler();
MenuHandler mh=new MenuHandler();
nameItem.addActionListener(mh);
submit.addActionListener(bh);
display.addActionListener(bh);
nameLabel=new JLabel("NAME");
nameText=new JTextField(10);
deptLabel=new JLabel("DEPT");
deptText=new JTextField(10);
salaryLabel=new JLabel("SALARY");
salaryText=new JTextField(10);
//Create a panel and place it in the north border
northPanel=new JPanel();
northPanel.add(nameLabel);
northPanel.add(nameText);
northPanel.add(deptLabel);
northPanel.add(deptText);
northPanel.add(salaryLabel);
northPanel.add(salaryText);
northPanel.add(sort);
sort.addActionListener(bh);
container.add(northPanel,BorderLayout.NORTH);
//container.add(label);
//container.add(text);
container.add(area,BorderLayout.CENTER);
//Create a panel and place it in the south border
southPanel=new JPanel();
southPanel.setLayout(new GridLayout(1,2));
southPanel.add(submit);
southPanel.add(display);
container.add(southPanel,BorderLayout.SOUTH);
//container.add(submit);
//container.add(display);
setSize(200,300);
show();
}
public static void main(String s[])
{
MidtermAppWithSort2 app=new MidtermAppWithSort2();
}
//inner class
private class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==submit)
{
String name=nameText.getText();
String dept=deptText.getText();
String salary=salaryText.getText();
if(empList.next<3)
{
empList.list[empList.next++]=new Employee(name,
Integer.parseInt(dept),Double.parseDouble(salary));
}else
area.append("No more room\n");
}
if(e.getSource()==display)
//area.append("Display clicked\n");
for(int i=0;i<empList.next;i++)
area.append(empList.list[i].toString()+"\n");
//sort by name
if(e.getSource()==sort){
empList.sortByName();
SortThread thread=new SortThread(empList);
thread.start();
}
}//end of actionPerformed
}//end of ButtonHandler class
//inner class
private class MenuHandler implements ActionListener
{
public void actionPerformed(ActionEvent ev)
{
if(ev.getSource()==nameItem)
{
String retValue=empList.searchOnName(
nameText.getText());
if(!retValue.equals(""))
area.append(retValue+"\n");
else
area.append("Not found\n");
}
}
}
}//end of GUIApp class
class SortThread extends Thread
{
EmployeeList list;
public SortThread(EmployeeList l)
{
list=l;
}
public void run()
{
list.sortByName();
}
}//end class
********************************************************