I'm a 10th Grader from the Philippines, and IT right now is about Java with GUI. Only the basic ones. Our project is to make a POS System. I already made one, but there are some minor problems:
JComponents don't appear unless I either minimize the window then reopen it (everything then shows up) or I hover over them with my mouse (one by one)
For the "Amount Paid" (screen2) text field, where I use a keypad to input String, it firsts shows "null" before the first input, because this text field is set to show "0" at first then accepts input from the keypad. But the first time I input something when the programs has just run, it shows "null" first. It can be cleared, but can be very confusing.
Please forgive me for my being an amateur for I am just a students and this is just a project. Also, this is my first time here, so sorry if I do anything weird! I use BlueJ BTW. Please, I am asking for your help. Thank you!
Here is my source code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class BalikBukid extends JFrame{
public static final int WIDTH = 1500;
public static final int HEIGHT = 750;
private JLabel BalikBukidFarmKitchen, PriceToPay, AmountPaid;
private JButton CaesarSalad, FarmSalad, Karekare, BeefTaPao, Adobo, MushroomChicken, KaningAsul, KaningDilaw, IceCreamBasket, TsokolateIsland;
private JButton Starters, Beef, Chicken, Rice, Dessert;
private JButton one, two, three, four, five, six, seven, eight, nine, zero, clear;
private JButton order, endorders;
private JTextField screen1, screen2;
private static int OrderPrice = 0, Cash, caesars = 0, farmsalds = 0, kare = 0, tapao = 0, adobs = 0, mushroom = 0, asul = 0, dilaw = 0, icecream = 0, islands = 0;;
private static String PayingScreen;
private OrderHandler ordhandler = new OrderHandler();
private MoneyHandler monhandler = new MoneyHandler();
private TransactionHandler transhandler = new TransactionHandler();
private TotalOrdersHandler tordhandler = new TotalOrdersHandler();
public BalikBukid(){
Container pane = getContentPane();
pane.setLayout(null);
setTitle("Balik Bukid POS System");
setSize(WIDTH, HEIGHT);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pane.setBackground(Color.green);
//Instantiate the labels and buttons
BalikBukidFarmKitchen = new JLabel("Balik Bukid Farm & Kitchen");
Starters = new JButton("STARTERS");
Beef = new JButton("BEEF");
Chicken = new JButton("CHICKEN");
Rice = new JButton("RICE");
Dessert = new JButton("DESSERT");
PriceToPay = new JLabel("Price to pay: ");
AmountPaid = new JLabel("Price paid: ");
CaesarSalad = new JButton("<html><center><b>Classic Caesar<br>Salad</b><br>Php 160</center></html>");
FarmSalad = new JButton("<html><center><b>Balik Bukid<br>Farm Salad</b><br>Php 160</center></html>");
Karekare = new JButton("<html><center><b>Ang Kare-kare</b><br>Php 210</center></html>");
BeefTaPao = new JButton("<html><center><b>Garlic Beef<br>Ta Pao</b><br>Php 180</center></html>");
Adobo = new JButton("<html><center><b>Binalot na<br>Adobong Dilaw</b><br>Php 145</center></html>");
MushroomChicken = new JButton("<html><center><b>Mushroom Chicken</b><br>Php 160</center></html>");
KaningAsul = new JButton("<html><center><b>Kaning Asul</b><br>Php 35</center></html>");
KaningDilaw = new JButton("<html><center><b>Kaning Dilaw</b><br>Php 35</center></html>");
IceCreamBasket = new JButton("<html><center><b>Ice Cream<br>Basket</b><br>Php 110</center></html>");
TsokolateIsland = new JButton("<html><center><b>Tsokolate Islands</b><br>Php 180<</center></html>");
one = new JButton("1");
two = new JButton("2");
three = new JButton("3");
four = new JButton("4");
five = new JButton("5");
six = new JButton("6");
seven = new JButton("7");
eight = new JButton("8");
nine = new JButton("9");
zero = new JButton("0");
order = new JButton("TRANSACT");
endorders = new JButton("CHECK OUT");
screen1 = new JTextField();
screen2 = new JTextField();
clear = new JButton("CLEAR");
//Set the bounds of each button and label
BalikBukidFarmKitchen.setBounds(570, 10, 300, 50);
CaesarSalad.setBounds(250, 100, 100, 70);
FarmSalad.setBounds(355, 100, 100, 70);
Starters.setBounds(90, 100, 150, 70);
Karekare.setBounds(250, 180, 100, 70);
BeefTaPao.setBounds(355, 180, 100, 70);
Beef.setBounds(90, 180, 150, 70);
Adobo.setBounds(250, 260, 100, 70);
MushroomChicken.setBounds(355, 260, 100, 70);
Chicken.setBounds(90, 260, 150, 70);
KaningAsul.setBounds(250, 340, 100, 70);
KaningDilaw.setBounds(355, 340, 100, 70);
Rice.setBounds(90, 340, 150, 70);
IceCreamBasket.setBounds(250, 420, 100, 70);
TsokolateIsland.setBounds(355, 420, 100, 70);
Dessert.setBounds(90, 420, 150, 70);
one.setBounds(950, 150, 80, 60);
two.setBounds(1030, 150, 80, 60);
three.setBounds(1110, 150, 80, 60);
four.setBounds(950, 210, 80, 60);
five.setBounds(1030, 210, 80, 60);
six.setBounds(1110, 210, 80, 60);
seven.setBounds(950, 270, 80, 60);
eight.setBounds(1030, 270, 80, 60);
nine.setBounds(1110, 270, 80, 60);
zero.setBounds(950, 330, 80, 60);
clear.setBounds(1030, 330, 160, 60);
order.setBounds(570, 500, 120, 60);
endorders.setBounds(720,500, 120, 60);
screen1.setBounds(600, 150, 200, 45);
screen2.setBounds(600, 300, 200, 45);
PriceToPay.setBounds(600, 130, 200, 20);
AmountPaid.setBounds(600, 280, 200, 20);
//Formatting
BalikBukidFarmKitchen.setFont(new Font("Trebuchet MS", Font.BOLD, 20));
BalikBukidFarmKitchen.setForeground(Color.BLUE);
PriceToPay.setFont(new Font("Trebuchet MS", Font.ITALIC, 15));
PriceToPay.setForeground(Color.BLUE);
AmountPaid.setFont(new Font("Trebuchet MS", Font.ITALIC, 15));
AmountPaid.setForeground(Color.BLUE);
Starters.setFont(new Font("Trebuchet MS", Font.BOLD, 20));
Starters.setForeground(Color.RED);
Starters.setBackground(Color.WHITE);
Beef.setFont(new Font("Trebuchet MS", Font.BOLD, 20));
Beef.setForeground(Color.RED);
Beef.setBackground(Color.ORANGE);
Chicken.setFont(new Font("Trebuchet MS", Font.BOLD, 20));
Chicken.setForeground(Color.RED);
Chicken.setBackground(Color.PINK);
Rice.setFont(new Font("Trebuchet MS", Font.BOLD, 20));
Rice.setForeground(Color.RED);
Rice.setBackground(Color.YELLOW);
Dessert.setFont(new Font("Trebuchet MS", Font.BOLD, 20));
Dessert.setForeground(Color.RED);
Dessert.setBackground(Color.MAGENTA);
screen1.setText("0");
screen2.setText("0");
screen1.setFont(new Font("Trebuchet MS", Font.BOLD, 19));
screen2.setFont(new Font("Trebuchet MS", Font.BOLD, 19));
screen1.setHorizontalAlignment(JTextField.CENTER);
screen2.setHorizontalAlignment(JTextField.CENTER);
screen1.setEditable(false);
screen2.setEditable(false);
//Add Action Listener
CaesarSalad.addActionListener(ordhandler);
FarmSalad.addActionListener(ordhandler);
Karekare.addActionListener(ordhandler);
BeefTaPao.addActionListener(ordhandler);
Adobo.addActionListener(ordhandler);
MushroomChicken.addActionListener(ordhandler);
KaningAsul.addActionListener(ordhandler);
KaningDilaw.addActionListener(ordhandler);
IceCreamBasket.addActionListener(ordhandler);
TsokolateIsland.addActionListener(ordhandler);
one.addActionListener(monhandler);
two.addActionListener(monhandler);
three.addActionListener(monhandler);
four.addActionListener(monhandler);
five.addActionListener(monhandler);
six.addActionListener(monhandler);
seven.addActionListener(monhandler);
eight.addActionListener(monhandler);
nine.addActionListener(monhandler);
zero.addActionListener(monhandler);
clear.addActionListener(monhandler);
order.addActionListener(transhandler);
endorders.addActionListener(tordhandler);
//Add to the container
pane.add(BalikBukidFarmKitchen);
pane.add(PriceToPay);
pane.add(AmountPaid);
pane.add(CaesarSalad);
pane.add(FarmSalad);
pane.add(Karekare);
pane.add(BeefTaPao);
pane.add(Adobo);
pane.add(MushroomChicken);
pane.add(KaningAsul);
pane.add(KaningDilaw);
pane.add(IceCreamBasket);
pane.add(TsokolateIsland);
pane.add(screen1);
pane.add(screen2);
pane.add(one);
pane.add(two);
pane.add(three);
pane.add(four);
pane.add(five);
pane.add(six);
pane.add(seven);
pane.add(eight);
pane.add(nine);
pane.add(zero);
pane.add(clear);
pane.add(order);
pane.add(endorders);
pane.add(Starters);
pane.add(Beef);
pane.add(Chicken);
pane.add(Rice);
pane.add(Dessert);
}
public class OrderHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
String StringOrderPrice;
if(e.getActionCommand().equals("<html><center><b>Classic Caesar<br>Salad</b><br>Php 160</center></html>")){
OrderPrice += 160;
StringOrderPrice = Integer.toString(OrderPrice);
screen1.setText(StringOrderPrice);
caesars++;
}else if(e.getActionCommand().equals("<html><center><b>Balik Bukid<br>Farm Salad</b><br>Php 160</center></html>")){
OrderPrice += 160;
StringOrderPrice = Integer.toString(OrderPrice);
screen1.setText(StringOrderPrice);
farmsalds++;
}else if(e.getActionCommand().equals("<html><center><b>Ang Kare-kare</b><br>Php 210</center></html>")){
OrderPrice += 210;
StringOrderPrice = Integer.toString(OrderPrice);
screen1.setText(StringOrderPrice);
kare++;
}else if(e.getActionCommand().equals("<html><center><b>Garlic Beef<br>Ta Pao</b><br>Php 180</center></html>")){
OrderPrice += 180;
StringOrderPrice = Integer.toString(OrderPrice);
screen1.setText(StringOrderPrice);
tapao++;
}else if(e.getActionCommand().equals("<html><center><b>Binalot na<br>Adobong Dilaw</b><br>Php 145</center></html>")){
OrderPrice += 145;
StringOrderPrice = Integer.toString(OrderPrice);
screen1.setText(StringOrderPrice);
adobs++;
}else if(e.getActionCommand().equals("<html><center><b>Mushroom Chicken</b><br>Php 160</center></html>")){
OrderPrice += 160;
StringOrderPrice = Integer.toString(OrderPrice);
screen1.setText(StringOrderPrice);
mushroom++;
}else if(e.getActionCommand().equals("<html><center><b>Kaning Asul</b><br>Php 35</center></html>")){
OrderPrice += 35;
StringOrderPrice = Integer.toString(OrderPrice);
screen1.setText(StringOrderPrice);
asul++;
}else if(e.getActionCommand().equals("<html><center><b>Kaning Dilaw</b><br>Php 35</center></html>")){
OrderPrice += 35;
StringOrderPrice = Integer.toString(OrderPrice);
screen1.setText(StringOrderPrice);
dilaw++;
}else if(e.getActionCommand().equals("<html><center><b>Ice Cream<br>Basket</b><br>Php 110</center></html>")){
OrderPrice += 110;
StringOrderPrice = Integer.toString(OrderPrice);
screen1.setText(StringOrderPrice);
icecream++;
}else if(e.getActionCommand().equals("<html><center><b>Tsokolate Islands</b><br>Php 180<</center></html>")){
OrderPrice += 180;
StringOrderPrice = Integer.toString(OrderPrice);
screen1.setText(StringOrderPrice);
islands++;
}
}
}
public class MoneyHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("1")){
PayingScreen += "1";
screen2.setText(PayingScreen);
}else if(e.getActionCommand().equals("2")){
PayingScreen += "2";
screen2.setText(PayingScreen);
}else if(e.getActionCommand().equals("3")){
PayingScreen += "3";
screen2.setText(PayingScreen);
}else if(e.getActionCommand().equals("4")){
PayingScreen += "4";
screen2.setText(PayingScreen);
}else if(e.getActionCommand().equals("5")){
PayingScreen += "5";
screen2.setText(PayingScreen);
}else if(e.getActionCommand().equals("6")){
PayingScreen += "6";
screen2.setText(PayingScreen);
}else if(e.getActionCommand().equals("7")){
PayingScreen += "7";
screen2.setText(PayingScreen);
}else if(e.getActionCommand().equals("8")){
PayingScreen += "8";
screen2.setText(PayingScreen);
}else if(e.getActionCommand().equals("9")){
PayingScreen += "9";
screen2.setText(PayingScreen);
}else if(e.getActionCommand().equals("0")){
PayingScreen += "0";
screen2.setText(PayingScreen);
}else if(e.getActionCommand().equals("CLEAR")){
PayingScreen = "";
screen2.setText(PayingScreen);
}
}
}
public class TransactionHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
int balance, cashinput, IntAmtPaid, change;
String Strcashinput;
IntAmtPaid = Integer.parseInt(PayingScreen);
if(IntAmtPaid < OrderPrice){
balance = OrderPrice - IntAmtPaid;
do{
Strcashinput = JOptionPane.showInputDialog(null, "Balance: " + balance +"", "Balance", JOptionPane.INFORMATION_MESSAGE);
cashinput = Integer.parseInt(Strcashinput);
balance = balance - cashinput;
}while(balance != 0);
JOptionPane.showMessageDialog(null, "Balance: 0. Total balance paid. New transaction.", "Total Balance Paid", JOptionPane.INFORMATION_MESSAGE);
PayingScreen = "";
OrderPrice = 0;
screen1.setText("0");
screen2.setText("0");
}else if(IntAmtPaid == OrderPrice){
JOptionPane.showMessageDialog(null, "Balance: 0. Exact amount paid. New transaction.", "Next transaction", JOptionPane.INFORMATION_MESSAGE);
PayingScreen = "";
OrderPrice = 0;
screen1.setText("0");
screen2.setText("0");
}else{
change = IntAmtPaid - OrderPrice;
JOptionPane.showMessageDialog(null, "Change: " + change + ". New transaction.", "Change", JOptionPane.INFORMATION_MESSAGE);
PayingScreen = "";
OrderPrice = 0;
screen1.setText("0");
screen2.setText("0");
}
}
}
public class TotalOrdersHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null, "TOTAL ORDERS TODAY:\nClassic Caesars Salad: " + caesars + " order/s\nFarm Salad: " + farmsalds + " order/s\nKare-kare: " + kare + " order/s\nBeef Ta Pao: " + tapao + " order/s\nAdobo: " + adobs + " order/s\nMushroom Chicken: " + mushroom + " order/s\nKaning Asul: " + asul + " order/s\nKaning Dilaw: " + dilaw + " order/s\nIce Cream Basket: " + icecream + " order/s\nTsokolate Islands: " + islands + "orders.\nHave a good day!", "Total Orders", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
public static void main (String[]args){
BalikBukid body = new BalikBukid();
}
}
Also I may or may not be restricted to the packages I already imported in my program, but it would be better if we discussed about them in class so I can understand them more. And sorry I use comments, haha, I use them so I won't get lost.