'Java Swing loop doesn't work and my JTable doesn't pop up

So I am new to java swing, and I don't understand why my code doesn't loop, shown below:

import javax.swing.*;

public class Lizardo_HW3 {
    JTable t;

    public static void main(String[] args){
        String empMax = JOptionPane.showInputDialog("How many employees you want to input:");
        byte empNumMax = Byte.parseByte(empMax);
        Compute(empNumMax);
    }

    public static void Compute(byte max){
        int empNum[] = new int[max];
        float rateDays[][] = new float[max][2];
        float sal[] = new float[max];
        String[][] tableData = new String[max][3];

        for (int i = 0; i < max; i++){
            String en = JOptionPane.showInputDialog(null, "ID Number:", "Employee Number " + (i + 1), JOptionPane.INFORMATION_MESSAGE);
            empNum[i] = Integer.parseInt(en);

            String rd = JOptionPane.showInputDialog(null, "Rate per day:", "Employee Number " + (i + 1), JOptionPane.INFORMATION_MESSAGE);
            rateDays[i][0] = Float.parseFloat(rd);
            
            String dw = JOptionPane.showInputDialog(null, "Days worked:", "Employee Number " + (i + 1), JOptionPane.INFORMATION_MESSAGE);
            rateDays[i][1] = Float.parseFloat(dw);

            sal[i] = rateDays[i][0] * rateDays[i][1];
            String strSal = String.format("%.02f", sal[i]);

            JOptionPane.showMessageDialog(null, "Salary: " + strSal, "Employee Number " + (i + 1), JOptionPane.INFORMATION_MESSAGE);
            tableData[i][0] = Integer.toString(empNum[i]);
            tableData[i][1] = Float.toString(rateDays[i][0]);
            tableData[i][2] = Float.toString(rateDays[i][1]);
            tableData[i][3] = Float.toString(sal[i]);
        }
        
        
        JFrame f = new JFrame();
        f.setTitle("Employee Table");
        String[] columnNames = {"Employee ID", "Rate per Day", "Days Worked", "Salary"};
        JTable t = new JTable(tableData, columnNames);
        t.setBounds(30,40,200,300);

        JScrollPane sp = new JScrollPane(t);
        f.add(sp);
        f.setSize(500,200);
        f.setVisible(true);
    }
}

This was based on a previous console code my teacher showed which looked like this:

import java.util.Scanner;

public class doodscode {
     static Scanner sc= new Scanner(System.in);

     public static void main(String[] args) {

         byte empNumMax;

         System.out.println("How many employees you want to input :");
         empNumMax=sc.nextByte();
         Compute(empNumMax);
     }

     public static void Compute(byte max){
         int empnum[]= new int[max];
         float rateDays[][]= new float[max][2];
         float sal[]=new float[max];

         for(int i=0; i<max; i++){
             System.out.println("\t Employee Number :" +(i + 1));
             System.out.println("ID Number : ");
             empnum[i]=sc.nextInt();

             System.out.println("\t Rate Per Days : ");
             rateDays[i][0]=sc.nextFloat();

             System.out.println("\t Days Worked : ");
             rateDays[i][1]=sc.nextFloat();

             sal[i]=rateDays[i][0] * rateDays[i][1];
             System.out.println("\t Salary : " + sal[i]);
         }

         Display(empnum, rateDays, sal, max);
     }

     private static void Display(int[] empnum, float[][] rateDays, float[] sal, byte max){
         System.out.println("EMPLOYEE ID ||  RATE PER DAY  ||  DAYS WORKED ||  SALARY  ");
         for(int j=0; j<max; j++){
             System.out.println(""
             + empnum[j] + "        ||  "
             + rateDays[j][0] + "      ||  "
             + rateDays[j][1] + "      ||  "
             + sal[j]);
         }

     }

}

I would like to know what I am doing wrong and how I can fix it in order for my code to loop and generate the proper JTable. Much thanks!



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source