Source Code : Customized component

Java Is Open Source Programming Language You Can Download From Java and Java Libraries From http://www.oracle.com. Click Here to download
We provide this code related to title for you to solve your developing problem easily. Libraries which is import in this program you can download from http://www.oracle.com. Click Here or search from google with Libraries Name you get jar file related it

Customized component

Customized component

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.Customizer;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Calendar;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Clock extends JButton implements Customizer, Externalizable,
    Runnable {

  protected PropertyChangeSupport propertyChangeSupport;

  protected boolean isDigital = false;

  protected Calendar calendar = Calendar.getInstance();

  public Clock() {

    propertyChangeSupport = new PropertyChangeSupport(this);

    setBackground(Color.white);
    setForeground(Color.black);

    (new Thread(this)).start();
  }

  public void writeExternal(ObjectOutput out) throws IOException {
    out.writeBoolean(isDigital);
    out.writeObject(getBackground());
    out.writeObject(getForeground());
    out.writeObject(getPreferredSize());
  }

  public void readExternal(ObjectInput in) throws IOException,
      ClassNotFoundException {
    setDigital(in.readBoolean());
    setBackground((Color) in.readObject());
    setForeground((Color) in.readObject());
    setPreferredSize((Dimension) in.readObject());
  }

  public Dimension getPreferredSize() {
    return new Dimension(50, 50);
  }

  public Dimension getMinimumSize() {
    return getPreferredSize();
  }

  public Dimension getMaximumSize() {
    return getPreferredSize();
  }

  public void setDigital(boolean digital) {
    propertyChangeSupport.firePropertyChange("digital", new Boolean(
        isDigital), new Boolean(digital));
    isDigital = digital;
    repaint();
  }

  public boolean getDigital() {
    return isDigital;
  }

  public void addPropertyChangeListener(PropertyChangeListener lst) {
    if (propertyChangeSupport != null)
      propertyChangeSupport.addPropertyChangeListener(lst);
  }

  public void removePropertyChangeListener(PropertyChangeListener lst) {
    if (propertyChangeSupport != null)
      propertyChangeSupport.removePropertyChangeListener(lst);
  }

  public void setObject(Object bean) {
  }

  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Color colorRetainer = g.getColor();

    g.setColor(getBackground());
    g.fillRect(0, 0, getWidth(), getHeight());
    getBorder().paintBorder(this, g, 0, 0, getWidth(), getHeight());

    calendar.setTime(new Date()); // get current time
    int hrs = calendar.get(Calendar.HOUR_OF_DAY);
    int min = calendar.get(Calendar.MINUTE);

    g.setColor(getForeground());
    if (isDigital) {
      String time = "" + hrs + ":" + min;
      g.setFont(getFont());
      FontMetrics fm = g.getFontMetrics();
      int y = (getHeight() + fm.getAscent()) / 2;
      int x = (getWidth() - fm.stringWidth(time)) / 2;
      g.drawString(time, x, y);
    } else {
      int x = getWidth() / 2;
      int y = getHeight() / 2;
      int rh = getHeight() / 4;
      int rm = getHeight() / 3;

      double ah = ((double) hrs + min / 60.0) / 6.0 * Math.PI;
      double am = min / 30.0 * Math.PI;

      g.drawLine(x, y, (int) (x + rh * Math.sin(ah)), (int) (y - rh
          * Math.cos(ah)));
      g.drawLine(x, y, (int) (x + rm * Math.sin(am)), (int) (y - rm
          * Math.cos(am)));
    }

    g.setColor(colorRetainer);
  }

  public void run() {
    while (true) {
      repaint();
      try {
        Thread.sleep(30 * 1000);
      } catch (InterruptedException ex) {
        break;
      }
    }
  }

  public static void main(String[] a) {
    JFrame f = new JFrame();
    f.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
    Clock c = new Clock();
    f.getContentPane().add("Center", c);
    f.pack();
    f.setSize(new Dimension(300, 300));
    f.show();

  }
}


           
       

Thank with us