0

When I compile this line 74 comes up as an illegal start of expression, why is this? I have been utterly unable to figure this out and any help would be greatly appreciated Thank you.

import java.awt.*;
import javax.swing.*;

public class NumericKeypadPanel2 extends JPanel
{
    public NumericKeypadPanel2()
    {
        String num = " ";


        JPanel panel_main = new JPanel();
        panel_main.setLayout(new BorderLayout());

        JPanel keypad = new JPanel();
        keypad.setLayout(new GridLayout (4, 3));
        keypad.setBorder (BorderFactory.createLineBorder (Color.black, 3));

        JButton b1 = new JButton ("1");
        JButton b2 = new JButton ("2");
        JButton b3 = new JButton ("3");
        JButton b4 = new JButton ("4");
        JButton b5 = new JButton ("5");
        JButton b6 = new JButton ("6");
        JButton b7 = new JButton ("7");
        JButton b8 = new JButton ("8");
        JButton b9 = new JButton ("9");
        JButton b10 = new JButton ("*");
        JButton b11 = new JButton ("0");
        JButton b12 = new JButton ("#");

        NumListener listener = new NumListener();

        b1.addActionListener (listener);

        keypad.add (b1);
        keypad.add (b2);
        keypad.add (b3);
        keypad.add (b4);
        keypad.add (b5);
        keypad.add (b6);
        keypad.add (b7);
        keypad.add (b8);
        keypad.add (b9);
        keypad.add (b10);
        keypad.add (b11);
        keypad.add (b12);

        panel_main.add(keypad, BorderLayout.CENTER);

        JButton clear = new JButton ("Clear");

        JLabel display = new JLabel(num);

        panel_main.add(clear, BorderLayout.SOUTH);
        panel_main.add(display, BorderLayout.NORTH);
        display.setBorder (BorderFactory.createLineBorder (Color.black, 3));

        add(panel_main);

        private class NumListener implements ActionListener
        {
            public void actionPerformed (ActionEvent event)
            {
                Object source = event.getSource();

                switch (source)
                {
                case b1:
                    display.setText(display.getText()+"1");
                    break;

                case b2:
                    display.setText(display.getText()+"2");
                    break;

                case b3:
                    display.setText(display.getText()+"3");
                    break;

                case b4:
                    display.setText(display.getText()+"4");
                    break;

                case b5:
                    display.setText(display.getText()+"5");
                    break;

                case b6:
                    display.setText(display.getText()+"6");
                    break;

                case b7:
                    display.setText(display.getText()+"7");
                    break;

                case b8:
                    display.setText(display.getText()+"8");
                    break;

                case b9:
                    display.setText(display.getText()+"9");
                    break;

                case b10:
                    display.setText(display.getText()+"*");
                    break;

                case b11:
                    display.setText(display.getText()+"0");
                    break;

                case b12:
                    display.setText(display.getText()+"#");
                    break;
                }


            }
        }



    }
}
Pshemo
  • 122,468
  • 25
  • 185
  • 269
Tyler B. Joudrey
  • 421
  • 1
  • 8
  • 22
  • @Tjoudrey: Please, next time write comment to the line where is problem. Now we have to copy your code and check were is line 74. Make it easier for us so we can help you faster ;) – sfelber Jun 28 '14 at 11:12

2 Answers2

5

Just a wild guess:

 Object source = event.getSource();
 switch (source){ <-- ERROR

to my knowledge, the switch statement doesnt work with objects.

Ed Morales
  • 1,027
  • 5
  • 9
0

Just as Edward said below, switch statements don't work with regular (?) objects. They only work with int, short, char, and byte types. They also work with enums. Here's my suggestion - use a if/else if statement and add action listeners to all of the buttons, so they link to the actionPerformed method:

@Override
public void actionPerformed(ActionEvent e) {
    Object o = e.getSource();
    if(o.equals(b1)) display.setText(display.getText()+"1");
    else if(o.equals(b1)) display.setText(display.getText()+"1");
    else if(o.equals(b2)) display.setText(display.getText()+"2");
    else if(o.equals(b3)) display.setText(display.getText()+"3");
    else if(o.equals(b4)) display.setText(display.getText()+"4");
    else if(o.equals(b5)) display.setText(display.getText()+"5");
    else if(o.equals(b6)) display.setText(display.getText()+"6");
    else if(o.equals(b7)) display.setText(display.getText()+"7");
    else if(o.equals(b8)) display.setText(display.getText()+"8");
    else if(o.equals(b9)) display.setText(display.getText()+"9");
    else if(o.equals(b10)) display.setText(display.getText()+"*");
    else if(o.equals(b11)) display.setText(display.getText()+"0");
    else if(o.equals(b12)) display.setText(display.getText()+"#");
}
  • Be careful String in the switch statement is supported from Java 1.7 Also mensioned here http://stackoverflow.com/questions/338206/switch-statement-with-strings-in-java – sfelber Jun 28 '14 at 10:45