Java GUI Help

Mind Of Logic

Onyx user!
Reputation
0
Anyone here that is pretty advanced with Java GUI? I have a project and I need some help with a GUI. I've got my logic coded, but now to program the functionality.
 
Does the GUI need to be hand coded?
 
I would guess so. I'm using eclipse. I already have my frame, a button and ten icons. I'm not that experienced with GridLayout. I'm doing a check out line simulator. I already have 5 classes coded. I have to more classes to go, a View (gui) and Controllor(Action Listener). I can post the code...


So I have to program this MVC GUI of a checkout line. I have a gui that has 10 registers. Each register has a queue of customers. There is a button that when clicked, will generate a customer and the customer will be entered in the line with the shorted amount of people in the line. I have everything coded but the GUI. I'm not sure how to get the customer created.

I guess where I would need help is in the StoreView and StoreController classes. I need help being able to use my methods and classes that I have created.

Here are my classes:

Store:

Code:
import java.util.HashSet;

public class Store {

	private HashSet<Register> regs;

	public Store(){
		this.regs = new HashSet<Register>();

		for(int i = 0;i<=10; i++){
			regs.add(new Register());
		}
	}

	private Register leastFullRegister() {

		int minLineSize = Integer.MAX_VALUE;
		Register leastFullRegister = null;

		for ( Register r : regs ) {
			if ( r.lineSize() < minLineSize ) {
				minLineSize = r.lineSize();
				leastFullRegister = r;
			}
		}
		return leastFullRegister;
	}

	public String toString(){

		String str = "";

		for(Register r: regs){

			str += r.toString();
		}
		return str;
	}


}

Register:

Code:
import java.util.LinkedList;
import java.util.Queue;

public class Register {

	private boolean open; // line open or not?
	private Queue<Customer> line; //the line of customers


	public Register(){
		open = true;
		line = new LinkedList<Customer>();
	} 

	public double getTotalEnqueue(){

		double totalTime = 0;

		for(Customer cust: line ){
			totalTime += cust.getServiceTime();	
		}

		return totalTime;
	}

	public void addCustomer(Customer c){
		line.add(c);
	}

	public Customer pollCustomer(){
		return line.poll();
	}

	public boolean isOpen(){

		return open;
	}

	public void setOpen(boolean open){

		this.open = open;
	}

	public int lineSize(){
		return line.size();
	}

	public String toString(){

		String str = "";

		for(Customer cust: line )
		{
			str += "\n" + cust.toString();	
		}

		return str;
	}
}

Customer:

Code:
import java.util.Random;


public class Customer {

	private double serviceTime;

	Customer(){
		Random r = new Random();
		serviceTime = r.nextInt(4);
	}
	
	public double getServiceTime(){
		return serviceTime;
	}
	
	public void setServiceTime(double serviceTime){
			
		this.serviceTime = serviceTime;
		
		return;
	}
	
	public String toString(){
		return "Service Time: " + serviceTime;
	}

}

StoreView:

Code:
import java.awt.Color;
import java.awt.GridLayout;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class StoreView extends JFrame{
   
    private JPanel topPanel;
    private JPanel checkoutPanel;
   
    private JButton createCustomer;
   
    private JTextField[] totalServiceTime = new JTextField[10];
   
    private ImageIcon registerIcon;
   
    private JLabel[] registers = new JLabel[10];
   
    private ArrayList<Customer> customers = new ArrayList<Customer>();
   
    private StoreModel model;
    private Register register = new Register();
   
    public StoreView(StoreModel model){
        this.model = model;
       
        setTitle("Checkout Simulator");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(11,10));
       
        buildTopPanel();
  
        add(topPanel);
        createRegisters();
        getServiceTime();
    
        pack();
        setVisible(true);
    }
    
    public void createRegisters(){
    	
    	registerIcon = new ImageIcon("C:\\Users\\Dev\\Desktop\\GUI Project\\GuiProject\\src\\register.png");
    	
    	for(int i = 0; i < registers.length; i++){
    		
    		registers[i] = new JLabel();
    		registers[i].setIcon(registerIcon);
    		add(registers[i]);
    	}
    }
    
    public void getServiceTime()
    {
    	
    	for(int i = 0; i < totalServiceTime.length; i++)
    	{
    		totalServiceTime[i].setText("" + register.getTotalEnqueue());
    		add(totalServiceTime[i]);
    	}
    }
    
   
    public void buildTopPanel(){
        topPanel = new JPanel();
        topPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
        createCustomer = new JButton("CreateCustomer");
        topPanel.add(createCustomer);
    }
    
    public void setCustomer(){
    	
    }
}

StoreModel:

Code:
public class StoreModel {

	private Customer cust = new Customer();
	private Store store = new Store();
	private Register reg = new Register();
	
	public StoreModel(){
		setCustomer(new Customer());
		setStore(new Store());
		setRegister(new Register());
	}
	
	public StoreModel(Customer customer, Store store, Register register){
		setCustomer(customer);
		setStore(store);
		setRegister(register);
	}
	
	
	public Customer getCustomer(){
		return cust;
	}
	
	public void setCustomer(Customer customer){
		cust = customer;
	}
	
	public Store getStore(){
		return store;
	}
	
	public void setStore(Store store){
		this.store = store;
	}
	
	public Register getRegister(){
		return reg;
	}
	
	public void setRegister(Register reg){
		this.reg = reg;
	}
}

Store Controller:

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class StoreController {

	private StoreModel model;
	private StoreView view;
	
	public StoreController(StoreModel model, StoreView view){
		this.model = model;
		this.view = view;
	}
	
	class AddCustomer implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			model.getCustomer().getServiceTime();
			
		}
		
	}
}
 
Back
Top