Click here to Skip to main content
15,881,733 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I am a beginner at using Java. I am trying to create a calculator using JFrame through Net beans IDE. When I run the program the build is successful but the GUI display of the calculator is blank. Here is a copy of the code.

public static void main(String[] args)
{
    EventQueue.invokeLater(new Runnable()
    {
        @Override
        public void run()
        {
            new Calculator();

        }
    });
     //TODO code application logic here
}


JPanel[] row = new JPanel[5];
JButton[] button = new JButton[19];
String[] buttonString = {"7", "8", "9", "+",
                         "4", "5", "6", "-",
                         "1", "2", "3", "*",
                         ".", "/", "C","Sqrt",
                         "+/-", "=", "0"};
int[] dimW = {300,45,100,90};
int[] dimH = {35, 40};
Dimension displayDimension = new Dimension(dimW[0], dimH[0]);
Dimension regularDimension = new Dimension(dimW[1], dimH[1]);
Dimension rColumnDimension = new Dimension(dimW[2], dimH[1]);
Dimension zeroButDimension = new Dimension(dimW[3], dimH[1]);
boolean[] function = new boolean[4];
double[] temporary = {0, 0};
JTextArea display = new JTextArea(1,20);
Font font = new Font("Times new Roman", Font.BOLD, 12);

Calculator(){
    super("Calculator");
    setDesign();
    setSize(400, 400);
    setResizable(false);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    GridLayout grid = new GridLayout (5,5);
    setLayout(grid);
     setVisible(true);

    for(int i = 0; i < 19; i++)
        function[i] = false;

    FlowLayout f1 = new FlowLayout(FlowLayout.CENTER);
    FlowLayout f2 = new FlowLayout(FlowLayout.CENTER,1,1);
    for(int i = 0; i < 5; i++)
        row[i] = new JPanel();
    row[0].setLayout(f1);
    for(int i = 1; i < 5; i++)
        row[i].setLayout(f2);
    for(int i = 0; i < 19; i++){

        button[i] = new JButton();
        button[i].setText(buttonString[i]);
        button[i].setFont(font);
        button[i].addActionListener(this);}
    display.setFont(font);
    display.setEditable(false);
    display.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
    display.setPreferredSize(displayDimension);
    for(int i = 0; i < 14; i++)
        button[i].setPreferredSize(regularDimension);
    for(int i = 14; i < 18; i++)
        button[i].setPreferredSize(rColumnDimension);
    button[18].setPreferredSize(zeroButDimension);

    row[0].add(display);
    add(row[0]);

    for(int i = 0; i < 4; i++)
        row[1].add(button[i]);
    row[1].add(button[14]);
    add(row[1]);
    for(int i = 4; i < 8; i++)
        row[2].add(button[i]);
    row[2].add(button[15]);
    add(row[2]);

    for(int i = 8; i < 12; i++)
        row[3].add(button[i]);
    row[3].add(button[16]);
    add(row[3]);

    row[4].add(button[18]);
    for(int i = 12; i < 14; i++)
        row[4].add(button[i]);
    row[4].add(button[17]);
    add(row[4]);     
}
 public void clear() {
try{
    display.setText("");
    for (int i = 0; i < 4; i++)
        function[i] = false;
    for(int i = 0; i < 2; i++)
        temporary[i] = 0;
}catch(NullPointerException e) {
}}
public void getSqrt() {
try {
    double value = Math.sqrt(Double.parseDouble(display.getText()));
    display.setText(Double.toString(value));
} catch(NumberFormatException e) {
}
}
public void getPosNeg() {
try {
    double value = Double.parseDouble(display.getText());
    if(value !=0) {
        value = value * (-1);
        display.setText(Double.toString(value));
    }
    else {
    }
} catch(NumberFormatException e) {
}}
public void getResult() {
double result = 0;
temporary[1] = Double.parseDouble(display.getText());
String temp0 = Double.toString(temporary[0]);
String temp1 = Double.toString(temporary[1]);
try {
    if(temp0.contains("-")) {
        String[] temp00 = temp0.split("-", 2);
        temporary[0] = (Double.parseDouble(temp00[1]) * -1);
    }
    if(temp1.contains("-")) {
        String[] temp11 = temp1.split("-", 2);
        temporary[1] = (Double.parseDouble(temp11[1]) * -1);
    }
}
catch(ArrayIndexOutOfBoundsException e) {
}
try {
    if(function[2] == true)
        result = temporary[0] * temporary[1];
    else if(function[3] == true)
        result = temporary[0] / temporary[1];
    else if(function[0] == true)
        result = temporary[0] + temporary[1];
    else if(function[1] == true)
        result = temporary[0] - temporary[1];
    display.setText(Double.toString(result));
    for(int i = 0; i < 4; i++)
        function[i] = false;
}
catch(NumberFormatException e) {
}}
public final void setDesign(){
    try {
        UIManager.setLookAndFeel(
                "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
    } catch(Exception e) {
    }
}

public void actionPerformed(ActionEvent ae) {
   if(ae.getSource() == button[0])
       display.append("7");
   if(ae.getSource() == button[1])
       display.append("8");
   if(ae.getSource() == button[2])
       display.append("9");
   if(ae.getSource() == button[3]) {

       temporary[0] = Double.parseDouble(display.getText());
       function[0] = true;
       display.setText("");
   }
   if(ae.getSource() == button[4])
       display.append("4");
   if(ae.getSource() == button[5]);
   display.append("5");
   if(ae.getSource() == button[6])
       display.append("6");
   if(ae.getSource() == button[7]) {

       temporary[0] = Double.parseDouble(display.getText());
       function[1] = true;
       display.setText("");
   }
   if(ae.getSource() == button[8])
       display.append("1");
   if(ae.getSource() == button[9]);
   display.append("2");
   if(ae.getSource() == button[10]);
   display.append("3");
   if(ae.getSource() == button[11]) {

       temporary[0] = Double.parseDouble(display.getText());
       function[2] = true;
       display.setText("");
   }
   if(ae.getSource() == button[12])
       display.append(".");
   if(ae.getSource() == button[13]) {

       temporary[0] = Double.parseDouble(display.getText());
       function[3] = true;
       display.setText("");
   }
   if(ae.getSource() == button[14])
       clear();
   if(ae.getSource() == button[15])
       getSqrt();
   if(ae.getSource() == button[16])
       getPosNeg();
   if(ae.getSource() == button[17])
       getResult();
   if(ae.getSource() == button[18])
       display.append("0");
}


What I have tried:

I made sure I put the set visible code but it is still displaying a blank calculator. What could be the problem?
Posted
Updated 14-Jan-18 21:08pm
Comments
wseng 14-Jan-18 22:38pm    
There are a lot of errors in your code
David_Wimbley 14-Jan-18 23:09pm    
Way to be helpful...

1 solution

There's no way of finding a swing calculator example on the web...[^].
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900