Worker.java public abstract class Worker { String name; int salary; // // public Worker(String n) { name = n; salary = 0; public String getname() { return name; public int getsalary() { return salary; public abstract void addsalary(int start, int end); Staff.java public class Staff extends Worker { int dailypay; // public Staff(String n, int d) { super(n); dailypay = d; public void addsalary(int start, int end) { salary += dailypay; int time = end - start; if(time > 8) { salary += (time - 8) dailypay 1.5 / 8; 1
Arbeit.java public class Arbeit extends Worker { int hourlypay; // public Arbeit(String n, int h) { super(n); hourlypay = h; public void addsalary(int start, int end) { salary += (end - start) hourlypay; GUI 1: GUI CompanyFrame.java import java.awt.; import java.awt.event.; import javax.swing.; import javax.swing.border.; import java.util.; public class CompanyFrame extends JFrame { 2
Company acompany; JList workerslst; JButton addbtn, removebtn; JLabel sumlbl; JMenuItem exititm; // public CompanyFrame() { JMenuBar bar = new JMenuBar(); JMenu filemn = new JMenu(" "); exititm = new JMenuItem(" "); ActionListener listener = new CompanyActionListener(this); exititm.addactionlistener(listener); filemn.add(exititm); bar.add(filemn); setjmenubar(bar); JPanel panel1 = new JPanel(new BorderLayout()); workerslst = new JList(new DefaultListModel()); workerslst.addmouselistener(new CompanyMouseListener(this)); JScrollPane pane = new JScrollPane(workersLst); pane.setborder(new TitledBorder(" ")); panel1.add(pane, "Center"); sumlbl = new JLabel("0 ", JLabel.CENTER); sumlbl.setborder(new TitledBorder(" ")); panel1.add(sumlbl, "South"); getcontentpane().add(panel1, "Center"); JPanel panel2 = new JPanel(); addbtn = new JButton(" "); addbtn.addactionlistener(listener); panel2.add(addbtn); removebtn = new JButton(" "); removebtn.addactionlistener(listener); panel2.add(removebtn); getcontentpane().add(panel2, "South"); setsize(200, 250); // public void setcompany(company c) { acompany = c; update(); // public Company getcompany() { return acompany; Worker public Worker getselectedworker() { DefaultListModel model = (DefaultListModel) workerslst.getmodel(); Iterator it = acompany.workers.iterator(); while(it.hasnext()) { Worker w = (Worker) it.next(); if(w.getname().equals(workerslst.getselectedvalue())) return w; 3
return null; public void update() { settitle(acompany.getname()); DefaultListModel model = (DefaultListModel) workerslst.getmodel(); model.removeallelements(); Iterator it = acompany.workers.iterator(); while(it.hasnext()) { model.addelement(((worker)it.next()).getname()); sumlbl.settext(string.valueof(acompany.sumsalary()) + " "); public static void main(string args[]) { Company soft = new Company(" "); Worker hisashi = new Staff(" ", 15000); Worker keiji = new Arbeit(" ", 1000); soft.addworker(hisashi); soft.addworker(keiji); hisashi.addsalary(9, 20); keiji.addsalary(8, 17); CompanyFrame frame = new CompanyFrame(); frame.setcompany(soft); frame.setvisible(true); CompanyActionListener.java import java.awt.event.; public class CompanyActionListener implements ActionListener { CompanyFrame frame; public CompanyActionListener(CompanyFrame f) { frame = f; public void actionperformed(actionevent e) { if(e.getsource().equals(frame.addbtn)) { AddWorkerDialog dialog = new AddWorkerDialog(frame); dialog.setvisible(true); 4
else if(e.getsource().equals(frame.removebtn)) { frame.getcompany().removeworker(frame.getselectedworker()); frame.update(); else if(e.getsource().equals(frame.exititm)) { System.exit(0); AddWorkerDialog.java import java.awt.; import java.awt.event.; import javax.swing.; public class AddWorkerDialog extends JDialog { ButtonGroup group; JTextField namefld, payfld; JButton okbtn, cancelbtn; public AddWorkerDialog(CompanyFrame f) { super(f, " ", true); JPanel panel1 = new JPanel(); group = new ButtonGroup(); JRadioButton staff = new JRadioButton(" ", true); JRadioButton arbeit = new JRadioButton(" ", false); staff.setactioncommand("staff"); arbeit.setactioncommand("arbeit"); group.add(staff); group.add(arbeit); panel1.add(staff); panel1.add(arbeit); getcontentpane().add(panel1, "North"); JPanel panel2 = new JPanel(); panel2.add(new JLabel(" :")); namefld = new JTextField(10); panel2.add(namefld); panel2.add(new JLabel(" :")); payfld = new JTextField(6); panel2.add(payfld); getcontentpane().add(panel2, "Center"); JPanel panel3 = new JPanel(); ActionListener listener = new AddWorkerButtonListener(f, this); okbtn = new JButton(" "); okbtn.addactionlistener(listener); panel3.add(okbtn); cancelbtn = new JButton(" "); 5
cancelbtn.addactionlistener(listener); panel3.add(cancelbtn); getcontentpane().add(panel3, "South"); pack(); AddWorkerButtonListener.java import java.awt.event.; public class AddWorkerButtonListener implements ActionListener { CompanyFrame frame; AddWorkerDialog dialog; public AddWorkerButtonListener(CompanyFrame f, AddWorkerDialog d) { frame = f; dialog = d; public void actionperformed(actionevent e) { if(e.getsource().equals(dialog.okbtn)) { Worker worker; String name = dialog.namefld.gettext(); int pay = Integer.parseInt(dialog.payFld.getText()); if(dialog.group.getselection().getactioncommand().equals("staff")) { worker = new Staff(name, pay); else { worker = new Arbeit(name, pay); frame.getcompany().addworker(worker); frame.update(); dialog.setvisible(false); CompanyMouseListener.java import java.awt.event.; public class CompanyMouseListener extends MouseAdapter { CompanyFrame frame; 6
public CompanyMouseListener(CompanyFrame f) { frame = f; public void mouseclicked(mouseevent e) { if(e.getclickcount() == 2) { Worker worker = frame.getselectedworker(); AddSalaryDialog dialog = new AddSalaryDialog(frame, worker); dialog.setvisible(true); AddSalaryDialog.java import java.awt.; import java.awt.event.; import javax.swing.; public class AddSalaryDialog extends JDialog { Worker aworker; JComboBox startcmb, endcmb; JButton okbtn, cancelbtn; public AddSalaryDialog(CompanyFrame f, Worker w) { super(f, w.getname() + " ", true); aworker = w; JPanel panel1 = new JPanel(); panel1.add(new JLabel(" ")); startcmb = new JComboBox(); for(int i = 8; i <= 24; i++) { startcmb.additem(string.valueof(i)); panel1.add(startcmb); panel1.add(new JLabel(" ")); endcmb = new JComboBox(); for(int i = 8; i <= 24; i++) { endcmb.additem(string.valueof(i)); panel1.add(endcmb); getcontentpane().add(panel1, "North"); JPanel panel2 = new JPanel(); ActionListener listener = new AddSalaryButtonListener(f, this); okbtn = new JButton(" "); okbtn.addactionlistener(listener); panel2.add(okbtn); 7
cancelbtn = new JButton(" "); cancelbtn.addactionlistener(listener); panel2.add(cancelbtn); getcontentpane().add(panel2, "South"); pack(); //Worker public Worker getworker() { return aworker; AddSalaryButtonListener.java import java.awt.event.; public class AddSalaryButtonListener implements ActionListener { CompanyFrame frame; AddSalaryDialog dialog; public AddSalaryButtonListener(CompanyFrame f, AddSalaryDialog d) { frame = f; dialog = d; public void actionperformed(actionevent e) { if(e.getsource().equals(dialog.okbtn)) { Worker worker = dialog.getworker(); int start = Integer.parseInt((String)dialog.startCmb.getSelectedItem()); int end = Integer.parseInt((String)dialog.endCmb.getSelectedItem()); worker.addsalary(start, end); frame.update(); dialog.setvisible(false); 8
9 2: GUI Worker Company name:string name:string salary:int getname():string 1 getname():string addworker(w:worker):void getsalary():int sumsalary():int addsalary(start:int, end:int):void CompanyFrame workerslst:jlist addbtn,removebtn:jbutton sumlbl:jlabel exititm:jmenuitem getselectedworker():worker update():void CompanyActionListener actionperformed(e:actionevent):void Staff dailypay:int addsalary(start:int, end:int):void CompanyMouseListener mouseclicked(e:mouseevent):void Arbeit hourlypay:int addsalary(start:int, end:int):void AddSalaryDialog startcmb,endcmb:jcombobox okbtn,cancelbtn:jbutton AddWorkerButtonListener actionperformed(e:actionevent):void AddWorkerDialog group:buttongroup namefld,payfld:jtextfield okbtn,cancelbtn:jbutton AddSalaryButtonListener actionperformed(e:actionevent):void