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

public class Counter extends JPanel implements ActionListener {
    int count = 0;
    Font font = new Font("sanserif", Font.BOLD, 200);
    public Counter() {
        setBackground(Color.white);
    }    
    
    public void paintComponent(Graphics gfx) {
        super.paintComponent(gfx);
        Graphics2D g = (Graphics2D) gfx;
	g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
			   RenderingHints.VALUE_ANTIALIAS_ON);

	String text = String.valueOf(count);
	g.setFont(font);
        FontMetrics fm = g.getFontMetrics();
        Rectangle2D.Float rect =
            (Rectangle2D.Float) fm.getStringBounds(text, g);
        float x = getBounds().width/2 - rect.width/2;
        float y = getBounds().height/2 - rect.height/2 - rect.y;
        g.setPaint(new Color(0.5f, 1f, 0.5f));	
	g.drawString(text, x, y);
	
    }

    public void actionPerformed(ActionEvent event) {
	String actionCommand = event.getActionCommand();
	if (actionCommand.equals("Increase")) count++;
	else count = 0;
	repaint();
    }

    public static void main(String[] args) {
	Counter counter= new Counter();
        counter.setPreferredSize(new Dimension(300, 300));

	JPanel buttonPanel = new JPanel();
	buttonPanel.setBackground(Color.white);
	JButton up = new JButton("Increase");
	JButton reset = new JButton("Reset");
	buttonPanel.add(up);
	buttonPanel.add(reset);
	up.addActionListener(counter);
	reset.addActionListener(counter);

        JFrame frame = new JFrame("Counter");
	frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.getContentPane().add(counter, BorderLayout.CENTER);
        frame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
        frame.pack();
        frame.setVisible(true);

	
    }
}
