i'm not sure why my button code is not working it looks fine to me but theres errors with it can someone help me out?import static javax.swing.JOptionPane.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.*; import javax.swing.*; import java.text.DecimalFormat; public class ticket extends JFrame implements ActionListener { static final double SINGLE = 1.40; static final double RETURN = 2.40; static final double ZONE_A = 3.80; static final double ZONE_A_B = 5.50; DecimalFormat pounds = new DecimalFormat("£0.00"); String id; JTextField ticket = new JTextField(5); JTextField stp = new JTextField(5); int amount = 0; JTextField change = new JTextField(5); JTextField paid = new JTextField(5); JButton ten = new JButton("10p"); JButton twenty = new JButton("20p"); JButton fifty = new JButton("50p"); JButton pound = new JButton("£1"); JButton two = new JButton("£2"); JButton five = new JButton("£5"); JButton tenp = new JButton("£10"); JButton twentyp = new JButton("£20"); JButton cancel = new JButton("Cancel"); JRadioButton single = new JRadioButton("single (£1.40)",true); JRadioButton Return = new JRadioButton("return (£2.40)",true); JRadioButton zoneA = new JRadioButton("Zone A (£3.80)",true); JRadioButton zoneAB = new JRadioButton("Zone A B (£5.50)",true); ButtonGroup type =new ButtonGroup(); // The spinner gives values from 1 to 10. // Spinners allow safe entry of a number in a range. JSpinner numtick = new JSpinner(new SpinnerNumberModel(1, 0, 10, 1)); int stpno = 0; private int size = 0; public static void main(String[] args) { new ticket(); } public ticket() { setLayout(new BorderLayout()); setSize(700, 150); setTitle("Redwich Trams - Ticket Machine"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel top = new JPanel(); top.setLayout(new FlowLayout()); top.add(new JLabel("Ticket Type: ")); type.add(single); type.add(Return); type.add(zoneA); type.add(zoneAB); top.add(single); top.add(Return); top.add(zoneA); top.add(zoneAB); top.add(new JLabel(" Tickets")); top.add(numtick); single.addActionListener(this); Return.addActionListener(this); zoneA.addActionListener(this); zoneAB.addActionListener(this); add("North", top); setVisible(true); JPanel middle = new JPanel(); middle.setLayout(new FlowLayout()); middle.add(new JLabel("Ticket Type: ")); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); middle.add(ten); middle.add(twenty); middle.add(fifty); middle.add(pound); middle.add(two); middle.add(five); middle.add(tenp); middle.add(twentyp); middle.add(cancel); ten.addActionListener(this); twenty.addActionListener(this); fifty.addActionListener(this); pound.addActionListener(this); two.addActionListener(this); five.addActionListener(this); tenp.addActionListener(this); twentyp.addActionListener(this); cancel.addActionListener(this); add("Center", middle); setVisible(true); JPanel bottom = new JPanel(); bottom.setLayout(new FlowLayout()); bottom.add(new JLabel(" Ticket Cost:")); bottom.add(ticket); bottom.add(new JLabel(" Amount Paid:")); bottom.add(paid); bottom.add(new JLabel(" Amount Still To Pay:")); bottom.add(stp); stp.setEditable(false); bottom.add(new JLabel(" Change:")); bottom.add(change); ticket.setEditable(false); paid.setEditable(false); change.setEditable(false); ticket.setText("£0.00"); stp.setText("£0.00"); change.setText("£0.00"); paid.setText("£0.00"); add("South", bottom); setVisible(true); } public void actionPerformed(ActionEvent e){ { if (e.getSource() == ten) paid= paid + 10; amount =amount - 10; if (ticket<paid) { change=ticket-paid; } if (e.getSource() == twenty) paid=paid+20; amount =amount - 20; if (ticket<paid) { change=ticket-paid; } if (e.getSource() == fifty) paid=paid+50; amount =amount - 50; if (ticket<paid) { change=ticket-paid; } if (e.getSource() == pound) paid=paid+100; amount =amount - 100; if (ticket<paid) { change=ticket-paid; } if (e.getSource() == two) paid=paid+200; amount =amount - 200; if (ticket<paid) { change=ticket-paid; } if (e.getSource() == five) paid=paid+500; amount =amount - 500; if (ticket<paid) { change=ticket-paid; } if (e.getSource() == tenp) paid=paid+1000; amount =amount - 1000; if (ticket<paid) { change=ticket-paid; } if (e.getSource() == twentyp) paid=paid+2000; amount =amount - 2000; if (ticket<paid) { change=ticket-paid; } } { double tp = 0; int noticket = Integer.parseInt(""+numtick.getValue()); if (single.isSelected()) tp = 1.40; { ticket.setText(pounds.format(tp)); stp.setText(pounds.format(tp)); } if (Return.isSelected()) tp = 2.40; { ticket.setText(pounds.format(tp)); stp.setText(pounds.format(tp)); } if (zoneA.isSelected()) tp = 3.80; { ticket.setText(pounds.format(tp)); stp.setText(pounds.format(tp)); } if (zoneAB.isSelected()) tp = 5.50; { ticket.setText(pounds.format(tp)); stp.setText(pounds.format(tp)); } { if (e.getSource() == cancel); ticket.setText("£0.00"); stp.setText("£0.00"); change.setText("£0.00"); paid.setText("£0.00"); } } } }